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 no_login_required
def no_login_required skip_before_action :authenticate skip_before_action :authorize # puts _process_action_callbacks.map(&:filter) end
def only_allow_access_to(*args)
def only_allow_access_to(*args) options = {} options = args.pop.dup if args.last.kind_of?(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] case when allowed_roles = permissions[:when] allowed_roles = [allowed_roles].flatten user.present? ? allowed_roles.any? { |role| user.has_role?(role) } : false when condition_method = permissions[:if] instance.send(condition_method) else true end end