module LoginSystem::ClassMethods
def controller_permissions
def controller_permissions @controller_permissions ||= Hash.new { |h, k| h[k.to_s.intern] = Hash.new } end
def login_required
def login_required unless login_required? prepend_before_action :authenticate, :authorize end end
def login_required?
def login_required? filter_chain.any? { |f| f.method == :authenticate || f.method == :authorize } end
def only_allow_access_to(*args)
def only_allow_access_to(*args) options = {} options = args.pop.dup if args.last.is_a?(Hash) options.symbolize_keys! actions = args.map { |a| a.to_s.intern } actions.each do |action| controller_permissions[action] = options end end
def user_has_access_to_action?(user, action, instance = new)
def user_has_access_to_action?(user, action, instance = new) permissions = controller_permissions[action.to_s.intern] if allowed_roles = permissions[:when] allowed_roles = [allowed_roles].flatten user.present? ? allowed_roles.any? { |role| user.role?(role) } : false elsif condition_method = permissions[:if] instance.send(condition_method) else true end end