module Devise::Models::Authenticatable::ClassMethods

Public Instance Methods

find_first_by_auth_conditions(conditions) click to toggle source
# File lib/devise/models/authenticatable.rb, line 221
def find_first_by_auth_conditions(conditions)
  to_adapter.find_first devise_param_filter.filter(conditions)
end
find_for_authentication(conditions) click to toggle source

Find first record based on conditions given (ie by the sign in form). This method is always called during an authentication process but it may be wrapped as well. For instance, database authenticatable provides a `find_for_database_authentication` that wraps a call to this method. This allows you to customize both database authenticatable or the whole authenticate stack by customize `find_for_authentication.`

Overwrite to add customized conditions, create a join, or maybe use a namedscope to filter records while authenticating. Example:

def self.find_for_authentication(conditions={})
  conditions[:active] = true
  super
end

Finally, notice that Devise also queries for users in other scenarios besides authentication, for example when retrieving an user to send an e-mail for password reset. In such cases, #find_for_authentication is not called.

# File lib/devise/models/authenticatable.rb, line 217
def find_for_authentication(conditions)
  find_first_by_auth_conditions(conditions)
end
http_authenticatable?(strategy) click to toggle source
# File lib/devise/models/authenticatable.rb, line 192
def http_authenticatable?(strategy)
  http_authenticatable.is_a?(Array) ?
    http_authenticatable.include?(strategy) : http_authenticatable
end
params_authenticatable?(strategy) click to toggle source
# File lib/devise/models/authenticatable.rb, line 187
def params_authenticatable?(strategy)
  params_authenticatable.is_a?(Array) ?
    params_authenticatable.include?(strategy) : params_authenticatable
end
serialize_from_session(key, salt) click to toggle source
# File lib/devise/models/authenticatable.rb, line 182
def serialize_from_session(key, salt)
  record = to_adapter.get(key)
  record if record && record.authenticatable_salt == salt
end
serialize_into_session(record) click to toggle source
# File lib/devise/models/authenticatable.rb, line 178
def serialize_into_session(record)
  [record.to_key, record.authenticatable_salt]
end

Protected Instance Methods

devise_param_filter() click to toggle source
# File lib/devise/models/authenticatable.rb, line 254
def devise_param_filter
  @devise_param_filter ||= Devise::ParamFilter.new(case_insensitive_keys, strip_whitespace_keys)
end
generate_token(column) click to toggle source

Generate a token by looping and ensuring does not already exist.

# File lib/devise/models/authenticatable.rb, line 259
def generate_token(column)
  loop do
    token = Devise.friendly_token
    break token unless to_adapter.find_first({ column => token })
  end
end