Module: Devise::Models::MultiEmailAuthenticatable::ClassMethods
- Defined in:
- lib/devise/multi_email/models/authenticatable.rb
Instance Method Summary collapse
- #build_conditions(criteria) ⇒ Object
- #find_by_email(email) ⇒ Object
- #find_first_by_auth_conditions(tainted_conditions, opts = {}) ⇒ Object
Instance Method Details
#build_conditions(criteria) ⇒ Object
84 85 86 87 88 89 90 91 92 |
# 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) ⇒ Object
80 81 82 |
# 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 = {}) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# 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 |