Guest User

Untitled

a guest
Oct 17th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. require_relative '../rook'
  2.  
  3. class Rook::User
  4. include DataMapper::Resource
  5.  
  6. attr_accessor :password, :password_confirmation
  7.  
  8. property :id, Serial, :writer => :protected, :key => true
  9. property :email, String, :required => true, :length => (5..40),
  10. :unique => true, :format => :email_address
  11. property :username, String, :required => true, :length => (2..32),
  12. :unique => true
  13. property :hashed_password, String, :writer => :protected
  14. property :salt, String, :required => true, :writer => :protected
  15. property :created_at, DateTime
  16. property :account_type, String, :required => true, :default => 'standard',
  17. :writer => :protected
  18. property :active, Boolean, :default => true, :writer => :protected
  19.  
  20. validates_presence_of :password_confirmation
  21. validates_confirmation_of :password
  22.  
  23. def self.authenticate(username_or_email, pass)
  24. binding.pry
  25. current_user = first(:username => username_or_email)# || first(:email => username_or_email)
  26. return nil if current_user.nil? || Rook::User.class.encrypt(pass, current_user.salt) != current_user.hashed_password
  27. current_user
  28. end
  29.  
  30. def password=(pass)
  31. @password = pass
  32. self.salt = (1..12).map{(rand(26)+65).chr}.join if !self.salt
  33. self.hashed_password = Rook::User.class.encrypt(@password, self.salt)
  34. end
  35.  
  36. protected
  37. def self.encrypt(pass, salt)
  38. Digest::SHA1.hexdigest(pass+salt)
  39. end
  40. end
  41.  
  42. DataMapper.finalize
  43. DataMapper.auto_upgrade!
  44.  
  45. # has n, :profile
  46. # has n, :courses
  47. # has n, :opportunities
Add Comment
Please, Sign In to add comment