class GrapeDeviseTokenAuth::TokenAuthorizer

Attributes

data[R]
devise_interface[R]
resource[R]
resource_class[RW]
user[R]

Public Class Methods

new(data, devise_interface) click to toggle source
# File lib/grape_devise_token_auth/token_authorizer.rb, line 5
def initialize(data, devise_interface)
  @data = data
  @devise_interface = devise_interface
end

Public Instance Methods

authenticate_from_token(mapping = nil) click to toggle source
# File lib/grape_devise_token_auth/token_authorizer.rb, line 10
def authenticate_from_token(mapping = nil)
  @resource_class =  devise_interface.mapping_to_class(mapping)
  return nil unless resource_class

  # client id is not required
  client_id = data.client_id || 'default'

  resource_from_existing_devise_user
  return resource if correct_resource_type_logged_in? &&
                     resource_does_not_have_client_token?(client_id)

  return nil unless data.token_prerequisites_present?
  load_user_from_uid
  return nil unless user_authenticated?

  user
end

Private Instance Methods

correct_resource_type_logged_in?() click to toggle source
# File lib/grape_devise_token_auth/token_authorizer.rb, line 46
def correct_resource_type_logged_in?
  resource && resource.class == resource_class
end
load_user_from_uid() click to toggle source
# File lib/grape_devise_token_auth/token_authorizer.rb, line 38
def load_user_from_uid
  @user = resource_class.find_by_uid(uid)
end
resource_does_not_have_client_token?(client_id) click to toggle source
# File lib/grape_devise_token_auth/token_authorizer.rb, line 50
def resource_does_not_have_client_token?(client_id)
  resource.tokens[client_id].nil?
end
resource_from_existing_devise_user() click to toggle source
# File lib/grape_devise_token_auth/token_authorizer.rb, line 42
def resource_from_existing_devise_user
  @resource = @devise_interface.exisiting_warden_user(resource_class)
end
user_authenticated?() click to toggle source
# File lib/grape_devise_token_auth/token_authorizer.rb, line 34
def user_authenticated?
  user && user.valid_token?(token, client_id)
end