Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'digest/sha2'
- class User < ActiveRecord::Base
- has_and_belongs_to_many :roles
- belongs_to :store
- validates_uniqueness_of :username
- validates_presence_of :username, :first_name, :last_name
- validates_presence_of :password, :password_confirmation, :on => :update, :if => :password_required?
- validates_length_of :password, :within => 5..20, :on => :update, :if => :password_required?
- validates_confirmation_of :password, :on => :update, :if => :password_required?
- validates_presence_of :password, :password_confirmation, :on => :create
- validates_confirmation_of :password, :on => :create
- attr_accessor :password, :password_confirmation
- def self.authenticate(username, password)
- user = User.find(:first, :conditions => ['username = ?', username])
- if user.blank? ||
- Digest::SHA256.hexdigest(password user.password_salt) != user.password_hash
- raise "Username or password invalid"
- end
- user
- end
- def password=(pass)
- unless pass.blank?
- salt = [Array.new(6){rand(256).chr}.join].pack("m").chomp
- self.password_salt, self.password_hash =
- salt, Digest::SHA256.hexdigest(pass salt)
- end
- end
- def name
- self.first_name " " self.last_name
- end
- protected
- def password_required?
- !password.blank?
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement