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
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/devise_pam_authenticatable/model.rb', line 92 def authenticate_with_pam(attributes = {}) return nil unless attributes[:password] return nil unless (resource = pam_get_user(attributes)) # potential conflict detected resource = resource.pam_conflict(attributes) if resource.pam_conflict? return nil unless resource && resource.try(:pam_authentication, attributes[:password]) if resource.new_record? resource.pam_setup(attributes) resource.save! end resource end |
#pam_get_user(attributes = {}) ⇒ Object
63 64 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 |
# File 'lib/devise_pam_authenticatable/model.rb', line 63 def pam_get_user(attributes = {}) if ::Devise.usernamefield && attributes[:username] resource = find_by(::Devise.usernamefield => attributes[:username]) if resource.blank? resource = new(::Devise.usernamefield => attributes[:username]) end resource elsif ::Devise.emailfield && attributes[:email] resource = if ::Devise.check_at_sign && ::Devise.usernamefield && !attributes[:email].index('@') find_by(::Devise.usernamefield => attributes[:email]) else find_by(::Devise.emailfield => attributes[:email]) end if resource.blank? resource = new if ::Devise.check_at_sign && ::Devise.usernamefield && !attributes[:email].index('@') # use email as username resource[::Devise.usernamefield] = attributes[:email] else resource[::Devise.emailfield] = attributes[:email] end end resource end end |