Guest User

Untitled

a guest
Apr 30th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. class User
  2. include DataMapper::Resource
  3. include DataMapper::Validate
  4. include DataMapper::Timestamp
  5. include Paperclip::Resource
  6.  
  7. property :id, Integer, :serial => true
  8. property :username, String, :nullable => false
  9. property :email, String, :nullable => false
  10. property :salt, String
  11. property :crypted_password, String, :nullable => false
  12. property :person_id, Integer
  13. property :group_id, Integer
  14. property :previous_login_at, DateTime
  15. property :last_login_at, DateTime
  16. property :created_at, DateTime
  17. property :updated_at, DateTime
  18. property :private_profile, Boolean, :default => 0
  19.  
  20. has 0..1, :person
  21. has n, :contact_relationships
  22. has n, :group_relationships
  23.  
  24. validates_length :username, :within => 4..32
  25. validates_is_unique :username
  26. validates_format :username, :with => /^([0-9a-z_]+)$/i
  27.  
  28. validates_format :email, :as => :email_address
  29. validates_length :email, :within => 3..100
  30. validates_is_unique :email
  31.  
  32. attr_accessor :password, :password_confirmation
  33.  
  34. validates_present :password, :if => proc { |r| r.new_record? }
  35. validates_present :password_confirmation, :if => proc { |r| r.new_record? }
  36. validates_length :password, :within => 8..40, :if => proc { |r| !r.password.nil? }
  37. validates_is_confirmed :password, :groups => :create
  38.  
  39. before :save, :encrypt_password
  40.  
  41. def username=(value)
  42. attribute_set(:username, value.downcase)
  43. end
  44.  
  45. def authenticated?(password)
  46. crypted_password == encrypt(password)
  47. end
  48.  
  49. def encrypt_password
  50. return if password.blank?
  51. self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{username}--") if new_record?
  52. self.crypted_password = encrypt(password)
  53. end
  54.  
  55. def encrypt(password)
  56. self.class.encrypt(password, salt)
  57. end
  58.  
  59. class << self
  60. def encrypt(password, salt)
  61. Digest::SHA1.hexdigest("--#{salt}--#{password}--")
  62. end
  63.  
  64. def authenticate(username, password)
  65. u = User.first(:username => username.downcase)
  66. u && u.authenticated?(password) ? u : nil
  67. end
  68. end
  69. end
Add Comment
Please, Sign In to add comment