Advertisement
Guest User

Untitled

a guest
Feb 26th, 2015
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.11 KB | None | 0 0
  1. module SessionsHelper
  2.  
  3. # Logs in the given user.
  4. def log_in(user)
  5. session[:user_id] = user.id
  6. end
  7.  
  8. # Remembers a user in a persistent session.
  9. def remember(user)
  10. user.remember
  11. cookies.permanent.signed[:user_id] = user.id
  12. cookies.permanent[:remember_token] = user.remember_token
  13. end
  14.  
  15. def current_user?(user)
  16. user == current_user
  17. end
  18.  
  19. # Returns the user corresponding to the remember token cookie.
  20. def current_user
  21. if (user_id = session[:user_id])
  22. @current_user ||= User.find_by(id: user_id)
  23. elsif (user_id = cookies.signed[:user_id])
  24. user = User.find_by(id: user_id)
  25. if user && user.authenticated?(cookies[:remember_token])
  26. log_in user
  27. @current_user = user
  28. end
  29. end
  30. end
  31.  
  32. # Returns true if the user is logged in, false otherwise.
  33. def logged_in?
  34. !current_user.nil?
  35. end
  36.  
  37. def forget(user)
  38. user.forget
  39. cookies.delete(:user_id)
  40. cookies.delete(:remember_token)
  41. end
  42.  
  43. # Logs out the current user.
  44. def log_out
  45. forget(current_user)
  46. session.delete(:user_id)
  47. @current_user = nil
  48. end
  49.  
  50. # Redirects to stored location (or to the default).
  51. def redirect_back_or(default)
  52. redirect_to(root_url)
  53. session.delete(:forwarding_url)
  54. end
  55.  
  56. # Stores the URL trying to be accessed.
  57. def store_location
  58. session[:forwarding_url] = request.url if request.get?
  59. end
  60. end
  61.  
  62. class User < ActiveRecord::Base
  63. has_many :cars
  64. attr_accessor :remember_token
  65. before_save { self.email = email.downcase }
  66. validates :name, presence: true, length: { maximum: 50 }
  67. VALID_EMAIL_REGEX = /A[w+-.]+@[a-zd-.]+.[a-z]+z/i
  68. validates :email, presence: true, length: { maximum: 255 },
  69. format: { with: VALID_EMAIL_REGEX },
  70. uniqueness: { case_sensitive: false }
  71. has_secure_password
  72. validates :phone, presence:true
  73. validates :password, length: { minimum: 6 }, allow_blank: true
  74.  
  75. # Returns the hash digest of the given string.
  76. def User.digest(string)
  77. cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
  78. BCrypt::Engine.cost
  79. BCrypt::Password.create(string, cost: cost)
  80. end
  81.  
  82. # Returns a random token.
  83. def User.new_token
  84. SecureRandom.urlsafe_base64
  85. end
  86.  
  87. # Remembers a user in the database for use in persistent sessions.
  88. def remember
  89. self.remember_token = User.new_token
  90. update_attribute(:remember_digest, User.digest(remember_token))
  91. end
  92.  
  93. # Returns true if the given token matches the digest.
  94. def authenticated?(remember_token)
  95. return false if remember_digest.nil?
  96. BCrypt::Password.new(remember_digest).is_password?(remember_token)
  97. end
  98.  
  99. def forget
  100. update_attribute(:remember_digest, nil)
  101. end
  102.  
  103. def feed
  104. Car.where("user_id = ?", id)
  105. end
  106. end
  107. cookies.permanent.signed[:user_id] = user.id
  108. cookies.permanent[:remember_token] = user.remember_token
  109. end
  110.  
  111. def current_user?(user)
  112. user == current_user
  113. end
  114.  
  115. # Returns the user corresponding to the remember token cookie.
  116. def current_user
  117. if (user_id = session[:user_id])
  118. @current_user ||= User.find_by(id: user_id)
  119. elsif (user_id = cookies.signed[:user_id])
  120. user = User.find_by(id: user_id)
  121. if user && user.authenticated?(cookies[:remember_token])
  122. log_in user
  123. @current_user = user
  124. end
  125. end
  126. end
  127.  
  128. # Returns true if the user is logged in, false otherwise.
  129. def logged_in?
  130. !current_user.nil?
  131. end
  132.  
  133. def forget(user)
  134. user.forget
  135. cookies.delete(:user_id)
  136. cookies.delete(:remember_token)
  137. end
  138.  
  139. # Logs out the current user.
  140. def log_out
  141. forget(current_user)
  142. session.delete(:user_id)
  143. @current_user = nil
  144. end
  145.  
  146. # Redirects to stored location (or to the default).
  147. def redirect_back_or(default)
  148. redirect_to(root_url)
  149. session.delete(:forwarding_url)
  150. end
  151.  
  152. # Stores the URL trying to be accessed.
  153. def store_location
  154. session[:forwarding_url] = request.url if request.get?
  155. end
  156. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement