module Devise::Models::PamAuthenticatable::ClassMethods
Public Instance Methods
authenticate_with_pam(attributes = {})
click to toggle source
# File lib/devise_pam_authenticatable/model.rb, line 100 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], attributes[:request]) if resource.new_record? resource.pam_setup(attributes) resource.save! end resource end
pam_get_user(attributes = {})
click to toggle source
# File lib/devise_pam_authenticatable/model.rb, line 65 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 && !attributes[:email].index('@') if ::Devise.usernamefield # use email as username resource[::Devise.usernamefield] = attributes[:email] end if (email = Rpam2.getenv(resource.find_pam_service, attributes[:email], attributes[:password], 'email', false)) # set email if found in pam resource[::Devise.emailfield] = email end else resource[::Devise.emailfield] = attributes[:email] end end resource end end