Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- irb(main):001:0> u=User.create(:username=>"admin")
- => #<User username="admin" password_salt=nil id=3 password_hash=nil>
- irb(main):002:0> u.password = "admin"
- => "admin"
- irb(main):003:0> u
- => #<User username="admin" password_salt="oWzS4nVz" id=3 password_hash="6524521271fddd58611eb5aa8b32899652864a15517d84cd6d878339494df109">
- irb(main):004:0> User.first
- => #<User username="admin" password_salt=nil id=3 password_hash=nil>
- ## class User
- require 'digest/sha2'
- class User
- include DataMapper::Resource
- validates_is_unique :username
- property :id, Integer, :serial => true
- property :username, String
- property :password_salt, String
- property :password_hash, String
- def password=(pass)
- salt = [Array.new(6){rand(256).chr}.join].pack("m").chomp
- self.password_salt, self.password_hash = salt, Digest::SHA256.hexdigest(pass+salt)
- end
- def self.authenticate( username, password )
- user = User.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
- end
Add Comment
Please, Sign In to add comment