Advertisement
Guest User

Untitled

a guest
Jul 31st, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. ##User model user.rb
  2.  
  3. require 'digest/sha1'
  4. class User < ActiveRecord::Base
  5. has_many :posts
  6. has_many :comments
  7. # Virtual attribute for the unencrypted password
  8. attr_accessor :password
  9.  
  10. validates_presence_of :login, :email
  11. validates_presence_of :password, :if => :password_required?
  12. validates_presence_of :password_confirmation, :if => :password_required?
  13. validates_length_of :password, :within => 4..40, :if => :password_required?
  14. validates_confirmation_of :password, :if => :password_required?
  15. validates_length_of :login, :within => 3..40
  16. validates_length_of :email, :within => 3..100
  17. validates_uniqueness_of :login, :email, :case_sensitive => false
  18. before_save :encrypt_password
  19.  
  20. # Authenticates a user by their login name and unencrypted password. Returns the user or nil.
  21. def self.authenticate(login, password)
  22. u = find_by_login(login) # need to get the salt
  23. u && u.authenticated?(password) ? u : nil
  24. end
  25.  
  26. # Encrypts some data with the salt.
  27. def self.encrypt(password, salt)
  28. Digest::SHA1.hexdigest("--#{salt}--#{password}--")
  29. end
  30.  
  31. # Encrypts the password with the user salt
  32. def encrypt(password)
  33. self.class.encrypt(password, salt)
  34. end
  35.  
  36. def authenticated?(password)
  37. crypted_password == encrypt(password)
  38. end
  39.  
  40. def remember_token?
  41. remember_token_expires_at && Time.now.utc < remember_token_expires_at
  42. end
  43.  
  44. # These create and unset the fields required for remembering users between browser closes
  45. def remember_me
  46. self.remember_token_expires_at = 2.weeks.from_now.utc
  47. self.remember_token = encrypt("#{email}--#{remember_token_expires_at}")
  48. save(false)
  49. end
  50.  
  51. def forget_me
  52. self.remember_token_expires_at = nil
  53. self.remember_token = nil
  54. save(false)
  55. end
  56.  
  57. protected
  58. # before filter
  59. def encrypt_password
  60. return if password.blank?
  61. self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record?
  62. self.crypted_password = encrypt(password)
  63. end
  64.  
  65. def password_required?
  66. crypted_password.blank? || !password.blank?
  67. end
  68. end
  69.  
  70.  
  71. ## remote_user.rb model
  72.  
  73. class RemoteUser < ActiveRecord::Base
  74.  
  75. self.table_name = "user"
  76.  
  77. RemoteUser.establish_connection(
  78. :adapter => "mysql",
  79. :host => "site.com",
  80. :username => "remote",
  81. :password => "remote",
  82. :database => "wikidb"
  83. )
  84.  
  85. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement