Guest User

Untitled

a guest
Mar 5th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. ## Session controller
  2. def log_in
  3. return unless request.post?
  4.  
  5. if user = User.authenticate(params[:user][:username], params[:user][:password])
  6. session[:user] = user.id
  7. return
  8. end
  9.  
  10. redirect_to login_url
  11. end
  12.  
  13. def log_out
  14. session[:user] = nil
  15. end
  16.  
  17. ## User model
  18. require 'digest/sha1'
  19. class User < ActiveRecord::Base
  20. attr_reader :password
  21.  
  22. before_save :encrypt_password
  23.  
  24. def self.authenticate(username, password)
  25. user = find_by_username(username)
  26. if user.authenticated?(password)
  27. return user && user.authenticated?(password) ? user : nil
  28. end
  29.  
  30. def self.encrypt(password, salt="random string")
  31. Digest::SHA1.hexdigest("#{password}--#{salt}")
  32. end
  33.  
  34. def authenticated?(password)
  35. self.password == encrypt(password)
  36. end
  37.  
  38. def encrypt(password)
  39. self.class.encrypt(password)
  40. end
  41.  
  42. protected
  43.  
  44. def encrypt_password
  45. return if password.blank?
  46. self.password = encrypt(password) if new_record?
  47. end
  48. end
Add Comment
Please, Sign In to add comment