Sha256: 02b1a2a397e3658617a501e7dcf699b1e64a8778b16a755401b4ccbb7e3f4cb7
Contents?: true
Size: 1.6 KB
Versions: 3
Compression:
Stored size: 1.6 KB
Contents
#--- # Excerpted from "Agile Web Development with Rails, 2nd Ed." # We make no guarantees that this code is fit for any purpose. # Visit http://www.pragmaticprogrammer.com/titles/rails2 for more book information. #--- # Schema as of June 12, 2006 15:45 (schema version 7) # # Table name: users # # id :integer(11) not null, primary key # name :string(255) # hashed_password :string(255) # salt :string(255) # require 'digest/sha1' class User < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name attr_accessor :password_confirmation validates_confirmation_of :password def validate errors.add_to_base("Missing password") if hashed_password.blank? end def self.authenticate(name, password) user = self.find_by_name(name) if user expected_password = encrypted_password(password, user.salt) if user.hashed_password != expected_password user = nil end end user end # 'password' is a virtual attribute def password @password end def password=(pwd) @password = pwd return if pwd.blank? create_new_salt self.hashed_password = User.encrypted_password(self.password, self.salt) end def after_destroy if User.count.zero? raise "Can't delete last user" end end private def create_new_salt self.salt = self.object_id.to_s + rand.to_s end def self.encrypted_password(password, salt) string_to_hash = password + "wibble" + salt Digest::SHA1.hexdigest(string_to_hash) end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
amrita2-2.0.0 | sample/depot/app/models/user.rb |
amrita2-2.0.1 | sample/depot/app/models/user.rb |
amrita2-2.0.2 | sample/depot/app/models/user.rb |