module Passwd::Rails::ActiveRecordExt
Public Instance Methods
with_authenticate(passwd: nil, user_id: :email, password: :password)
click to toggle source
# File lib/passwd/rails/active_record_ext.rb, line 3 def with_authenticate(passwd: nil, user_id: :email, password: :password) passwd ||= Passwd.current define_singleton_auth_with_passwd(user_id) define_instance_auth_with_passwd(passwd, password) define_instance_set_password(passwd, password) end
Private Instance Methods
define_instance_auth_with_passwd(passwd, password_col)
click to toggle source
# File lib/passwd/rails/active_record_ext.rb, line 21 def define_instance_auth_with_passwd(passwd, password_col) define_method :authenticate do |plain| BCrypt::Password.new(send(password_col)) == plain end end
define_instance_set_password(passwd, password_col)
click to toggle source
# File lib/passwd/rails/active_record_ext.rb, line 27 def define_instance_set_password(passwd, password_col) define_method :set_password do |plain = nil| plain ||= passwd.random send("#{password_col}=", passwd.password_hashing(plain)) plain end end
define_singleton_auth_with_passwd(user_id_col)
click to toggle source
# File lib/passwd/rails/active_record_ext.rb, line 12 def define_singleton_auth_with_passwd(user_id_col) define_singleton_method :authenticate do |user_id, plain| user = find_by(user_id_col => user_id) return nil unless user user.authenticate(plain) ? user : nil end end