Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module SessionsHelper
- # Logs in the given user.
- def log_in(user)
- session[:user_id] = user.id
- end
- # Remembers a user in a persistent session.
- def remember(user)
- user.remember
- cookies.permanent.signed[:user_id] = user.id
- cookies.permanent[:remember_token] = user.remember_token
- end
- def current_user?(user)
- user == current_user
- end
- # Returns the user corresponding to the remember token cookie.
- def current_user
- if (user_id = session[:user_id])
- @current_user ||= User.find_by(id: user_id)
- elsif (user_id = cookies.signed[:user_id])
- user = User.find_by(id: user_id)
- if user && user.authenticated?(cookies[:remember_token])
- log_in user
- @current_user = user
- end
- end
- end
- # Returns true if the user is logged in, false otherwise.
- def logged_in?
- !current_user.nil?
- end
- def forget(user)
- user.forget
- cookies.delete(:user_id)
- cookies.delete(:remember_token)
- end
- # Logs out the current user.
- def log_out
- forget(current_user)
- session.delete(:user_id)
- @current_user = nil
- end
- # Redirects to stored location (or to the default).
- def redirect_back_or(default)
- redirect_to(root_url)
- session.delete(:forwarding_url)
- end
- # Stores the URL trying to be accessed.
- def store_location
- session[:forwarding_url] = request.url if request.get?
- end
- end
- class User < ActiveRecord::Base
- has_many :cars
- attr_accessor :remember_token
- before_save { self.email = email.downcase }
- validates :name, presence: true, length: { maximum: 50 }
- VALID_EMAIL_REGEX = /A[w+-.]+@[a-zd-.]+.[a-z]+z/i
- validates :email, presence: true, length: { maximum: 255 },
- format: { with: VALID_EMAIL_REGEX },
- uniqueness: { case_sensitive: false }
- has_secure_password
- validates :phone, presence:true
- validates :password, length: { minimum: 6 }, allow_blank: true
- # Returns the hash digest of the given string.
- def User.digest(string)
- cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
- BCrypt::Engine.cost
- BCrypt::Password.create(string, cost: cost)
- end
- # Returns a random token.
- def User.new_token
- SecureRandom.urlsafe_base64
- end
- # Remembers a user in the database for use in persistent sessions.
- def remember
- self.remember_token = User.new_token
- update_attribute(:remember_digest, User.digest(remember_token))
- end
- # Returns true if the given token matches the digest.
- def authenticated?(remember_token)
- return false if remember_digest.nil?
- BCrypt::Password.new(remember_digest).is_password?(remember_token)
- end
- def forget
- update_attribute(:remember_digest, nil)
- end
- def feed
- Car.where("user_id = ?", id)
- end
- end
- cookies.permanent.signed[:user_id] = user.id
- cookies.permanent[:remember_token] = user.remember_token
- end
- def current_user?(user)
- user == current_user
- end
- # Returns the user corresponding to the remember token cookie.
- def current_user
- if (user_id = session[:user_id])
- @current_user ||= User.find_by(id: user_id)
- elsif (user_id = cookies.signed[:user_id])
- user = User.find_by(id: user_id)
- if user && user.authenticated?(cookies[:remember_token])
- log_in user
- @current_user = user
- end
- end
- end
- # Returns true if the user is logged in, false otherwise.
- def logged_in?
- !current_user.nil?
- end
- def forget(user)
- user.forget
- cookies.delete(:user_id)
- cookies.delete(:remember_token)
- end
- # Logs out the current user.
- def log_out
- forget(current_user)
- session.delete(:user_id)
- @current_user = nil
- end
- # Redirects to stored location (or to the default).
- def redirect_back_or(default)
- redirect_to(root_url)
- session.delete(:forwarding_url)
- end
- # Stores the URL trying to be accessed.
- def store_location
- session[:forwarding_url] = request.url if request.get?
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement