Guest User

Untitled

a guest
Apr 11th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. ## controller
  2.  
  3. def login
  4. session[:user_id] = nil
  5. if request.post?
  6. user = User.authenticate(params[:login], params[:password])
  7. if user
  8. session[:user_id] = user.id
  9. redirect_to(:controller => "admin", :action => "index" )
  10. else
  11. flash[:login_notice] = "Zły login lub hasło"
  12. end
  13. end
  14. end
  15.  
  16. def wyloguj
  17. session[:user_id] = nil
  18. redirect_to(:controller => "admin", :action => "login" )
  19. end
  20.  
  21. ##model
  22.  
  23. # WALIDACJA
  24.  
  25. validates_presence_of :login, :message => "^brak loginu"
  26. validates_presence_of :password, :message => "^brak hasła"
  27. validates_format_of :password, :with => /^([\w.]{5,15}$)/, :message => "^Polskie litery, spacje oraz wszystkie znaki specjalne są niedozwolone. Hasło musi mieć przynajmniej 5 znaków, maksymalnie 15 znaków"
  28. validates_uniqueness_of :login, :message => "^ten login istnieje już w naszej bazie"
  29.  
  30. attr_accessor :password_confirmation
  31. attr_accessor :email_confirmation
  32.  
  33. validates_confirmation_of :password, :message => "^Hasła się nie zgadzają"
  34.  
  35.  
  36. def password
  37. @password
  38. end
  39.  
  40. def password=(pwd)
  41. @password = pwd
  42. create_new_salt
  43. self.hashed_password = User.encrypted_password(self.password, self.salt)
  44. end
  45.  
  46. def self.authenticate(login, password)
  47. user = self.find_by_login(login)
  48. if user
  49. expected_password = encrypted_password(password, user.salt)
  50. if user.hashed_password != expected_password
  51. user = nil
  52. end
  53. end
  54. user
  55. end
  56.  
  57. private
  58.  
  59. def self.encrypted_password(password, salt)
  60. string_to_hash = password + "83media" + salt
  61. Digest::SHA1.hexdigest(string_to_hash)
  62. end
  63.  
  64. def create_new_salt
  65. self.salt = self.object_id.to_s + rand.to_s
  66. end
Add Comment
Please, Sign In to add comment