mirror of
https://github.com/mastodon/mastodon.git
synced 2025-10-05 08:33:00 +00:00

Some checks failed
Bundler Audit / security (push) Waiting to run
Check i18n / check-i18n (push) Waiting to run
Chromatic / Run Chromatic (push) Waiting to run
CodeQL / Analyze (actions) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (ruby) (push) Waiting to run
Check formatting / lint (push) Waiting to run
Haml Linting / lint (push) Waiting to run
JavaScript Linting / lint (push) Waiting to run
Ruby Linting / lint (push) Waiting to run
JavaScript Testing / test (push) Waiting to run
Historical data migration test / test (14-alpine) (push) Waiting to run
Historical data migration test / test (15-alpine) (push) Waiting to run
Historical data migration test / test (16-alpine) (push) Waiting to run
Historical data migration test / test (17-alpine) (push) Waiting to run
Ruby Testing / build (production) (push) Waiting to run
Ruby Testing / build (test) (push) Waiting to run
Ruby Testing / test (.ruby-version) (push) Blocked by required conditions
Ruby Testing / test (3.2) (push) Blocked by required conditions
Ruby Testing / test (3.3) (push) Blocked by required conditions
Ruby Testing / ImageMagick tests (.ruby-version) (push) Blocked by required conditions
Ruby Testing / ImageMagick tests (3.2) (push) Blocked by required conditions
Ruby Testing / ImageMagick tests (3.3) (push) Blocked by required conditions
Ruby Testing / End to End testing (.ruby-version) (push) Blocked by required conditions
Ruby Testing / End to End testing (3.2) (push) Blocked by required conditions
Ruby Testing / End to End testing (3.3) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:8.10.2) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, opensearchproject/opensearch:2) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (3.2, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (3.3, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions
CSS Linting / lint (push) Has been cancelled
62 lines
1.4 KiB
Ruby
62 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module AccountOwnedConcern
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
before_action :authenticate_user!, if: -> { limited_federation_mode? && request.format != :json }
|
|
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
|
|
|
|
def account_required?
|
|
true
|
|
end
|
|
|
|
def set_account
|
|
@account = username_param.present? ? Account.find_local!(username_param) : Account.local.find(account_id_param)
|
|
end
|
|
|
|
def account_id_param
|
|
params[:account_id]
|
|
end
|
|
|
|
def username_param
|
|
params[:account_username]
|
|
end
|
|
|
|
def check_account_approval
|
|
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.permanently_unavailable?
|
|
permanent_unavailability_response
|
|
elsif @account.suspended? && !skip_temporary_suspension_response?
|
|
temporary_suspension_response
|
|
end
|
|
end
|
|
|
|
def skip_temporary_suspension_response?
|
|
false
|
|
end
|
|
|
|
def permanent_unavailability_response
|
|
expires_in(3.minutes, public: true)
|
|
gone
|
|
end
|
|
|
|
def temporary_suspension_response
|
|
expires_in(3.minutes, public: true)
|
|
forbidden
|
|
end
|
|
end
|