1
0
Fork 0
mirror of https://github.com/mastodon/mastodon.git synced 2025-03-21 06:29:19 +01:00

Change public profile pages to be disabled for unconfirmed users ()

Fixes 

Note that unconfirmed and unapproved accounts can still be searched for
and their (empty) account retrieved using the REST API.
This commit is contained in:
Claire 2022-01-28 14:24:37 +01:00 committed by GitHub
parent e38fc319dc
commit f5639e1cbe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 0 deletions
app/controllers/concerns
spec/controllers/concerns

View file

@ -8,6 +8,7 @@ module AccountOwnedConcern
before_action :set_account, if: :account_required?
before_action :check_account_approval, if: :account_required?
before_action :check_account_suspension, if: :account_required?
before_action :check_account_confirmation, if: :account_required?
end
private
@ -28,6 +29,10 @@ module AccountOwnedConcern
not_found if @account.local? && @account.user_pending?
end
def check_account_confirmation
not_found if @account.local? && !@account.user_confirmed?
end
def check_account_suspension
if @account.suspended_permanently?
permanent_suspension_response

View file

@ -11,10 +11,33 @@ describe ApplicationController, type: :controller do
end
end
around do |example|
registrations_mode = Setting.registrations_mode
example.run
Setting.registrations_mode = registrations_mode
end
before do
routes.draw { get 'success' => 'anonymous#success' }
end
context 'when account is unconfirmed' do
it 'returns http not found' do
account = Fabricate(:user, confirmed_at: nil).account
get 'success', params: { account_username: account.username }
expect(response).to have_http_status(404)
end
end
context 'when account is not approved' do
it 'returns http not found' do
Setting.registrations_mode = 'approved'
account = Fabricate(:user, approved: false).account
get 'success', params: { account_username: account.username }
expect(response).to have_http_status(404)
end
end
context 'when account is suspended' do
it 'returns http gone' do
account = Fabricate(:account, suspended: true)