Guest User

Untitled

a guest
Apr 28th, 2018
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. irb(main):001:0> u=User.create(:username=>"admin")
  2. => #<User username="admin" password_salt=nil id=3 password_hash=nil>
  3. irb(main):002:0> u.password = "admin"
  4. => "admin"
  5. irb(main):003:0> u
  6. => #<User username="admin" password_salt="oWzS4nVz" id=3 password_hash="6524521271fddd58611eb5aa8b32899652864a15517d84cd6d878339494df109">
  7. irb(main):004:0> User.first
  8. => #<User username="admin" password_salt=nil id=3 password_hash=nil>
  9. ## class User
  10. require 'digest/sha2'
  11. class User
  12. include DataMapper::Resource
  13. validates_is_unique :username
  14. property :id, Integer, :serial => true
  15. property :username, String
  16. property :password_salt, String
  17. property :password_hash, String
  18. def password=(pass)
  19. salt = [Array.new(6){rand(256).chr}.join].pack("m").chomp
  20. self.password_salt, self.password_hash = salt, Digest::SHA256.hexdigest(pass+salt)
  21. end
  22. def self.authenticate( username, password )
  23. user = User.first :conditions => ['username = ?', username]
  24. if user.blank? ||
  25. Digest::SHA256.hexdigest( password + user.password_salt ) != user.password_hash
  26. raise "Username or password invalid"
  27. end
  28. user
  29. end
  30. end
Add Comment
Please, Sign In to add comment