module Authlogic::Session::Password::InstanceMethods
Password related instance methods
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/authlogic/session/password.rb, line 116 def initialize(*args) if !self.class.configured_password_methods if login_field self.class.send(:attr_writer, login_field) if !respond_to?("#{login_field}=") self.class.send(:attr_reader, login_field) if !respond_to?(login_field) end if password_field self.class.send(:attr_writer, password_field) if !respond_to?("#{password_field}=") self.class.send(:define_method, password_field) {} if !respond_to?(password_field) self.class.class_eval " private # The password should not be accessible publicly. This way forms using form_for don't fill the password with the # attempted password. To prevent this we just create this method that is private. def protected_#{password_field} @#{password_field} end ", __FILE__, __LINE__ end self.class.configured_password_methods = true end super end
Public Instance Methods
credentials()
click to toggle source
Returns the #login_field / #password_field credentials combination in hash form.
Calls superclass method
# File lib/authlogic/session/password.rb, line 144 def credentials if authenticating_with_password? details = {} details[login_field.to_sym] = send(login_field) details[password_field.to_sym] = "<protected>" details else super end end
credentials=(value)
click to toggle source
Accepts the #login_field / #password_field credentials combination in hash form.
Calls superclass method
# File lib/authlogic/session/password.rb, line 156 def credentials=(value) super values = value.is_a?(Array) ? value : [value] if values.first.is_a?(Hash) values.first.with_indifferent_access.slice(login_field, password_field).each do |field, value| next if value.blank? send("#{field}=", value) end end end
invalid_password?()
click to toggle source
# File lib/authlogic/session/password.rb, line 167 def invalid_password? invalid_password == true end
Private Instance Methods
add_general_credentials_error()
click to toggle source
# File lib/authlogic/session/password.rb, line 216 def add_general_credentials_error error_message = if self.class.generalize_credentials_error_messages.is_a? String self.class.generalize_credentials_error_messages else "#{login_field.to_s.humanize}/Password combination is not valid" end errors.add(:base, I18n.t('error_messages.general_credentials_error', :default => error_message)) end
authenticating_with_password?()
click to toggle source
# File lib/authlogic/session/password.rb, line 172 def authenticating_with_password? login_field && (!send(login_field).nil? || !send("protected_#{password_field}").nil?) end
find_by_login_method()
click to toggle source
# File lib/authlogic/session/password.rb, line 208 def find_by_login_method self.class.find_by_login_method end
generalize_credentials_error_messages?()
click to toggle source
# File lib/authlogic/session/password.rb, line 226 def generalize_credentials_error_messages? self.class.generalize_credentials_error_messages end
invalid_password()
click to toggle source
# File lib/authlogic/session/password.rb, line 200 def invalid_password @invalid_password end
invalid_password=(value)
click to toggle source
# File lib/authlogic/session/password.rb, line 204 def invalid_password=(value) @invalid_password = value end
login_field()
click to toggle source
# File lib/authlogic/session/password.rb, line 212 def login_field self.class.login_field end
password_field()
click to toggle source
# File lib/authlogic/session/password.rb, line 230 def password_field self.class.password_field end
validate_by_password()
click to toggle source
# File lib/authlogic/session/password.rb, line 176 def validate_by_password self.invalid_password = false errors.add(login_field, I18n.t('error_messages.login_blank', :default => "cannot be blank")) if send(login_field).blank? errors.add(password_field, I18n.t('error_messages.password_blank', :default => "cannot be blank")) if send("protected_#{password_field}").blank? return if errors.count > 0 self.attempted_record = search_for_record(find_by_login_method, send(login_field)) if attempted_record.blank? generalize_credentials_error_messages? ? add_general_credentials_error : errors.add(login_field, I18n.t('error_messages.login_not_found', :default => "is not valid")) return end if !attempted_record.send(verify_password_method, send("protected_#{password_field}")) self.invalid_password = true generalize_credentials_error_messages? ? add_general_credentials_error : errors.add(password_field, I18n.t('error_messages.password_invalid', :default => "is not valid")) return end end
verify_password_method()
click to toggle source
# File lib/authlogic/session/password.rb, line 234 def verify_password_method self.class.verify_password_method end