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