Guest User

Untitled

a guest
Mar 10th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. require 'digest/sha1'
  2.  
  3. class User < ActiveRecord::Base
  4.  
  5. validates_presence_of :name,
  6. :password,
  7. :password_confirmation
  8.  
  9. validates_uniqueness_of :name
  10.  
  11. validates_length_of :password,
  12. :minimum => 5,
  13. :message => "should be at least 5 characters long"
  14.  
  15. attr_accessor :password_confirmation
  16. validates_confirmation_of :password
  17.  
  18.  
  19.  
  20. def password
  21. @password
  22. end
  23.  
  24. def password=(pwd)
  25. @password = pwd
  26. create_new_salt
  27. self.hashed_password = User.encrypted_password(self.password, self.salt)
  28. end
  29.  
  30. def self.authenticate(name, password)
  31. user = self.find_by_name(name)
  32. if user
  33. expected_password = encrypted_password(password, user.salt)
  34. if user.hashed_password != expected_password
  35. user = nil
  36. end
  37. end
  38. user
  39. end
  40.  
  41.  
  42. private
  43.  
  44. def self.encrypted_password(password, salt)
  45. string_to_hash = password + "w5i4b7b1l" + salt
  46. Digest::SHA1.hexdigest(string_to_hash)
  47. end
  48.  
  49. def create_new_salt
  50. self.salt = self.object_id.to_s + rand.to_s
  51. end
  52.  
  53. end
Add Comment
Please, Sign In to add comment