Module: Devise::Models::PamAuthenticatable::ClassMethods
- Defined in:
- lib/devise_pam_authenticatable/model.rb
Instance Method Summary collapse
Instance Method Details
#authenticate_with_pam(attributes = {}) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/devise_pam_authenticatable/model.rb', line 94 def authenticate_with_pam(attributes = {}) return nil unless attributes[:password] return nil unless (resource = pam_find_user(attributes)) # potential conflict detected resource = resource.pam_conflict(attributes) if resource.pam_conflict? return nil unless resource && resource.try(:valid_pam_authentication?, attributes[:password]) if resource.new_record? resource.pam_setup(attributes) resource.save! end resource end |
#pam_find_user(attributes = {}) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/devise_pam_authenticatable/model.rb', line 65 def pam_find_user(attributes = {}) if ::Devise.usernamefield && attributes[:username] resource = find_by(::Devise.usernamefield => attributes[:username]) if resource.blank? resource = new resource[::Devise.usernamefield] = attributes[:username] end return resource elsif ::Devise.emailfield && attributes[:email] if ::Devise.check_at_sign && ::Devise.usernamefield && attributes[:email].index('@').nil? resource = find_by(::Devise.usernamefield => attributes[:email]) else resource = find_by(::Devise.emailfield => attributes[:email]) end if resource.blank? resource = new if ::Devise.check_at_sign && ::Devise.usernamefield && attributes[:email].index('@').nil? # use email as username resource[::Devise.usernamefield] = attributes[:email] else resource[::Devise.emailfield] = attributes[:email] end end return resource end end |