Sha256: bdbc1732a92eada1abfb2f8ba027168fa14290c6fbfb5bc40f83085a1904e5ca
Contents?: true
Size: 1.78 KB
Versions: 1
Compression:
Stored size: 1.78 KB
Contents
require 'digest/sha1' module Barjillo module ActAsAuthModel def self.included(model) model.extend(ClassMethods) model.send(:include , AttrAccessor) model.send(:include, InstanceMethods) model.send(:include, Callbacks) end module Callbacks def self.included(model) model.class_eval do before_save :initialize_salt, :encrypt_password before_create :generate_remember_token end end end module AttrAccessor # Hook for attr_accessor virtual attributes. # # :password def self.included(model) model.class_eval do attr_accessor :password end end end module InstanceMethods def authenticated?(password) encrypted_password == encrypt(password) end def reset_remember_token! generate_remember_token save(:validate => false) end def forgot_password! generate_confirmation_token save(:validate => false) end protected def initialize_salt if new_record? self.password_salt = Digest::SHA1.hexdigest Time.now.to_s end end def generate_remember_token self.remember_token = encrypt("#{Time.now} -- #{Time.now}") end def encrypt_password self.encrypted_password = encrypt(password) unless password.blank? end def encrypt(password) Digest::SHA1.hexdigest "#{password}#{password_salt}" end end module ClassMethods def authenticate(login, password) return nil unless user = find_by_login(login) return user if user.authenticated?(password) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
barjillo-0.1.0 | lib/barjillo/act_as_auth_model.rb |