123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # 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 = Account.find_local!(username_param)
- 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
|