module Doorkeeper::AccessTokenMixin::ClassMethods

def find_matching_token(relation, application, custom_attributes, scopes)

Returns:
  • (Doorkeeper::AccessToken, nil) - Access Token instance or

Parameters:
  • custom_attributes (Nilable Hash) --
  • scopes (String, Doorkeeper::OAuth::Scopes) --
  • application (Doorkeeper::Application) --
  • relation (ActiveRecord::Relation) --
def find_matching_token(relation, application, custom_attributes, scopes)
  return nil unless relation
  matching_tokens = []
  batch_size = Doorkeeper.configuration.token_lookup_batch_size
  find_access_token_in_batches(relation, batch_size: batch_size) do |batch|
    tokens = batch.select do |token|
      scopes_match?(token.scopes, scopes, application&.scopes) &&
        custom_attributes_match?(token, custom_attributes)
    end
    matching_tokens.concat(tokens)
  end
  matching_tokens.max_by(&:created_at)
end