module Devise::Models::MultiEmailAuthenticatable::ClassMethods

Public Instance Methods

build_conditions(criteria) click to toggle source
# File lib/devise/multi_email/models/authenticatable.rb, line 84
def build_conditions(criteria)
  criteria = devise_parameter_filter.filter(criteria)
  # match the primary email record if the `unconfirmed_email` column is specified
  if Devise::MultiEmail.only_login_with_primary_email? || criteria[:unconfirmed_email]
    criteria.merge!(primary: true)
  end

  { multi_email_association.reflection.table_name.to_sym => criteria }
end
find_by_email(email) click to toggle source
# File lib/devise/multi_email/models/authenticatable.rb, line 80
def find_by_email(email)
  joins(multi_email_association.name).where(build_conditions email: email).first
end
find_first_by_auth_conditions(tainted_conditions, opts = {}) click to toggle source
Calls superclass method
# File lib/devise/multi_email/models/authenticatable.rb, line 64
def find_first_by_auth_conditions(tainted_conditions, opts = {})
  filtered_conditions = devise_parameter_filter.filter(tainted_conditions.dup)
  criteria = filtered_conditions.extract!(:email, :unconfirmed_email)

  if criteria.keys.any?
    conditions = filtered_conditions.to_h.merge(opts).
      reverse_merge(build_conditions(criteria))

    resource = joins(multi_email_association.name).find_by(conditions)
    resource.current_login_email = criteria.values.first if resource
    resource
  else
    super(tainted_conditions, opts)
  end
end