1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
# frozen_string_literal: true
module Doorkeeper
module OAuth
class InvalidTokenResponse < ErrorResponse
attr_reader :reason
def self.from_access_token(access_token, attributes = {})
reason = if access_token&.revoked?
:revoked
elsif access_token&.expired?
:expired
else
:unknown
end
new(attributes.merge(reason: reason))
end
def initialize(attributes = {})
super(attributes.merge(name: :invalid_token, state: :unauthorized))
@reason = attributes[:reason] || :unknown
end
def status
:unauthorized
end
def description
@description ||=
I18n.translate(
@reason,
scope: %i[doorkeeper errors messages invalid_token],
)
end
protected
def exception_class
errors_mapping.fetch(reason)
end
private
def errors_mapping
{
expired: Doorkeeper::Errors::TokenExpired,
revoked: Doorkeeper::Errors::TokenRevoked,
unknown: Doorkeeper::Errors::TokenUnknown,
}
end
end
end
end
|