class Authem::Support
Attributes
controller[R]
role[R]
Public Class Methods
new(role, controller)
click to toggle source
# File lib/authem/support.rb, line 5 def initialize(role, controller) @role, @controller = role, controller end
Public Instance Methods
clear_for(record)
click to toggle source
# File lib/authem/support.rb, line 37 def clear_for(record) check_record! record sign_out Authem::Session.by_subject(record).where(role: role_name).delete_all end
current()
click to toggle source
# File lib/authem/support.rb, line 9 def current if ivar_defined? ivar_get else ivar_set(fetch_subject_by_token) end end
deny_access()
click to toggle source
# File lib/authem/support.rb, line 50 def deny_access # default landing point for deny_#{role_name}_access fail NotImplementedError, "No strategy for require_#{role_name} defined. Please define `deny_#{role_name}_access` method in your controller" end
require_role()
click to toggle source
# File lib/authem/support.rb, line 43 def require_role unless signed_in? session[:return_to_url] = request.url unless request.xhr? controller.send "deny_#{role_name}_access" end end
sign_in(record, options={})
click to toggle source
# File lib/authem/support.rb, line 17 def sign_in(record, options={}) check_record! record ivar_set record auth_session = create_auth_session(record, options) save_session auth_session save_cookie auth_session if options[:remember] auth_session end
sign_out()
click to toggle source
# File lib/authem/support.rb, line 30 def sign_out ivar_set nil Authem::Session.where(role: role_name, token: current_auth_token).delete_all cookies.delete key, domain: :all session.delete key end
signed_in?()
click to toggle source
# File lib/authem/support.rb, line 26 def signed_in? current.present? end
Private Instance Methods
check_record!(record)
click to toggle source
# File lib/authem/support.rb, line 59 def check_record!(record) fail ArgumentError if record.nil? end
create_auth_session(record, options)
click to toggle source
# File lib/authem/support.rb, line 76 def create_auth_session(record, options) Authem::Session.create!(role: role_name, subject: record, ttl: options[:ttl]) end
current_auth_token()
click to toggle source
# File lib/authem/support.rb, line 72 def current_auth_token session[key] || cookies.signed[key] end
fetch_subject_by_token()
click to toggle source
# File lib/authem/support.rb, line 63 def fetch_subject_by_token return if current_auth_token.blank? auth_session = get_auth_session_by_token(current_auth_token) return nil unless auth_session auth_session.refresh save_cookie auth_session if cookies.signed[key].present? auth_session.subject end
get_auth_session_by_token(token)
click to toggle source
# File lib/authem/support.rb, line 92 def get_auth_session_by_token(token) Authem::Session.active.find_by(role: role_name, token: token) end
ivar_defined?()
click to toggle source
# File lib/authem/support.rb, line 100 def ivar_defined? controller.instance_variable_defined?(ivar_name) end
ivar_get()
click to toggle source
# File lib/authem/support.rb, line 108 def ivar_get controller.instance_variable_get ivar_name end
ivar_name()
click to toggle source
# File lib/authem/support.rb, line 112 def ivar_name @ivar_name ||= "@_#{key}".to_sym end
ivar_set(value)
click to toggle source
# File lib/authem/support.rb, line 104 def ivar_set(value) controller.instance_variable_set ivar_name, value end
key()
click to toggle source
# File lib/authem/support.rb, line 96 def key "_authem_current_#{role_name}" end
save_session(auth_session)
click to toggle source
# File lib/authem/support.rb, line 80 def save_session(auth_session) session[key] = auth_session.token end