master
 1module Authenticatable
 2  extend ActiveSupport::Concern
 3  included do
 4    before_action :authenticate!
 5    helper_method :current_user, :current_session
 6  end
 7
 8  protected
 9
10  def current_session(session_id = session[:user_id])
11    @current_session ||= UserSession.authenticate(session_id)
12  end
13
14  def current_user
15    @current_user ||= User.find(current_session.try(:user_id))
16  rescue ActiveRecord::RecordNotFound
17    nil
18  end
19
20  def authenticate!
21    return if current_user.present?
22    redirect_to new_session_path
23  rescue
24    redirect_to new_session_path
25  end
26end