module DoorkeeperNobrainer::AccessTokenMixin
Attributes
use_refresh_token[W]
Public Instance Methods
acceptable?(scopes)
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 119 def acceptable?(scopes) accessible? && includes_scope?(*scopes) end
as_json(_options = {})
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 103 def as_json(_options = {}) { resource_owner_id: resource_owner_id, scopes: scopes, expires_in_seconds: expires_in_seconds, application: { uid: application.try(:uid) }, created_at: created_at.to_i, } end
by_refresh_token(refresh_token)
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 36 def by_refresh_token(refresh_token) where(refresh_token: refresh_token.to_s).first end
by_token(token)
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 32 def by_token(token) where(token: token.to_s).limit(1).to_a.first end
find_or_create_for(application, resource_owner_id, scopes, expires_in, use_refresh_token)
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 68 def find_or_create_for(application, resource_owner_id, scopes, expires_in, use_refresh_token) if Doorkeeper.configuration.reuse_access_token access_token = matching_token_for(application, resource_owner_id, scopes) if access_token && !access_token.expired? return access_token end end create!( application_id: application.try(:id), resource_owner_id: resource_owner_id, scopes: scopes.to_s, expires_in: expires_in, use_refresh_token: use_refresh_token ) end
matching_token_for(application, resource_owner_or_id, scopes)
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 47 def matching_token_for(application, resource_owner_or_id, scopes) resource_owner_id = if resource_owner_or_id.respond_to?(:to_key) resource_owner_or_id.id else resource_owner_or_id end token = last_authorized_token_for(application.try(:id), resource_owner_id) if token && scopes_match?(token.scopes, scopes, application.try(:scopes)) token end end
revoke_all_for(application_id, resource_owner)
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 40 def revoke_all_for(application_id, resource_owner) where(application_id: application_id, resource_owner_id: resource_owner.id, revoked_at: nil). map(&:revoke) end
same_credential?(access_token)
click to toggle source
It indicates whether the tokens have the same credential
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 114 def same_credential?(access_token) application_id == access_token.application_id && resource_owner_id == access_token.resource_owner_id end
scopes_match?(token_scopes, param_scopes, app_scopes)
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 59 def scopes_match?(token_scopes, param_scopes, app_scopes) (!token_scopes.present? && !param_scopes.present?) || Doorkeeper::OAuth::Helpers::ScopeChecker.match?( token_scopes.to_s, param_scopes, app_scopes ) end
token_type()
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 95 def token_type 'bearer' end
use_refresh_token?()
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 99 def use_refresh_token? !!@use_refresh_token end
Private Instance Methods
generate_refresh_token()
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 125 def generate_refresh_token write_attribute :refresh_token, UniqueToken.generate end
generate_token()
click to toggle source
# File lib/doorkeeper/mixin/access_token_mixin.rb, line 129 def generate_token generator = Doorkeeper.configuration.access_token_generator.constantize self.token = generator.generate(resource_owner_id: resource_owner_id, scopes: scopes, application: application, expires_in: expires_in) rescue NoMethodError raise Errors::UnableToGenerateToken, "{generator} does not respond to `.generate`." rescue NameError raise Errors::TokenGeneratorNotFound, "{generator} not found" end