3 class User
< ActiveRecord
::Base
4 validates_presence_of
:name
5 validates_uniqueness_of
:name
7 attr_accessor
:password_confirmation
8 validates_confirmation_of
:password
10 validate
:password_non_blank
18 return if passwd
.blank
?
20 self.hashed_password
= User
.encrypted_password(self.password
, self.salt
)
23 def self.authenticate(name
, password
)
24 user
= self.find_by_name(name
)
26 expected_password
= encrypted_password(password
, user
.salt
)
27 if user
.hashed_password
!= expected_password
36 raise "Can't delete last user"
42 def password_non_blank
43 errors
.add(:password, "Missing password" ) if hashed_password
.blank
?
46 def self.encrypted_password(password
, salt
)
47 string_to_hash
= password
+ 'wibble' + salt
48 Digest
::SHA1.hexdigest string_to_hash
52 self.salt
= self.object_id
.to_s
+ rand
.to_s