module Doorkeeper::AccessTokenMixin
def acceptable?(scopes)
-
(Boolean)
- true if record is accessible and includes scopes or
Parameters:
-
scopes
(Array
) -- scopes
def acceptable?(scopes) accessible? && includes_scope?(*scopes) end
def as_json(_options = {})
-
(Hash)
- hash with token data
def as_json(_options = {}) { resource_owner_id: resource_owner_id, scope: scopes, expires_in: expires_in_seconds, application: { uid: application.try(:uid) }, created_at: created_at.to_i, } end
def generate_refresh_token
-
(String)
- refresh token value
def generate_refresh_token @raw_refresh_token = UniqueToken.generate secret_strategy.store_secret(self, :refresh_token, @raw_refresh_token) end
def generate_token
-
(Doorkeeper::Errors::TokenGeneratorNotFound)
- -
(Doorkeeper::Errors::UnableToGenerateToken)
-
Returns:
-
(String)
- generated token value
def generate_token self.created_at ||= Time.now.utc @raw_token = token_generator.generate( resource_owner_id: resource_owner_id, scopes: scopes, application: application, expires_in: expires_in, created_at: created_at ) secret_strategy.store_secret(self, :token, @raw_token) @raw_token end
def plaintext_refresh_token
We keep a volatile copy of the raw refresh token for initial communication
def plaintext_refresh_token if secret_strategy.allows_restoring_secrets? secret_strategy.restore_secret(self, :refresh_token) else @raw_refresh_token end end
def plaintext_token
while hashing strategies do not, so you cannot rely on this value
Some strategies allow restoring stored secrets (e.g. symmetric encryption)
The stored refresh_token may be mapped and not available in cleartext.
We keep a volatile copy of the raw token for initial communication
def plaintext_token if secret_strategy.allows_restoring_secrets? secret_strategy.restore_secret(self, :token) else @raw_token end end
def same_credential?(access_token)
-
(Boolean)
- true if credentials are same of false in other cases
Parameters:
-
access_token
(Doorkeeper::AccessToken
) -- other token
def same_credential?(access_token) application_id == access_token.application_id && resource_owner_id == access_token.resource_owner_id end
def token_generator
def token_generator generator_name = Doorkeeper.configuration.access_token_generator generator = generator_name.constantize return generator if generator.respond_to?(:generate) raise Errors::UnableToGenerateToken, "#{generator} does not respond to `.generate`." rescue NameError raise Errors::TokenGeneratorNotFound, "#{generator_name} not found" end
def token_type
- See: https://tools.ietf.org/html/rfc6750 -
def token_type "Bearer" end
def use_refresh_token?
def use_refresh_token? @use_refresh_token ||= false !!@use_refresh_token end