module Petergate::ActionController::Base::ClassMethods

Public Instance Methods

access(rules = {}, &block) click to toggle source
# File lib/petergate/action_controller/base.rb, line 22
def access(rules = {}, &block)
  if block
    b_rules = block.call
    rules = rules.merge(b_rules) if b_rules.is_a?(Hash)
  end

  instance_eval do
    @_controller_rules = rules
    @_controller_message = rules.delete(:message)

    def controller_rules
      @_controller_rules
    end

    def controller_message
      @_controller_message || "Permission Denied"
    end

    def inherited(subclass)
      subclass.instance_variable_set("@_controller_rules", instance_variable_get("@_controller_rules"))
      subclass.instance_variable_set("@_controller_message", instance_variable_get("@_controller_message"))
    end
  end

  before_action do 
    unless logged_in?(:root_admin)
      message = permissions(self.class.controller_rules)
      if message == false || message.is_a?(String)
        if current_user || @user
          forbidden! message
        else
          unauthorized!
        end
      end
    end
  end
end
all_actions() click to toggle source
# File lib/petergate/action_controller/base.rb, line 14
def all_actions
  ->{self.action_methods.to_a.map(&:to_sym) - [:check_access, :title]}.call
end
const_missing(const_name) click to toggle source
Calls superclass method
# File lib/petergate/action_controller/base.rb, line 5
def const_missing(const_name)
  if [:AllRest, :ALLREST].include?(const_name)
    warn "`AllRest` and `ALLREST` has been deprecated. Use :all instead."
    return ALLRESTDEP
  else
    return super 
  end
end
controller_message() click to toggle source
# File lib/petergate/action_controller/base.rb, line 36
def controller_message
  @_controller_message || "Permission Denied"
end
controller_rules() click to toggle source
# File lib/petergate/action_controller/base.rb, line 32
def controller_rules
  @_controller_rules
end
except_actions(arr = []) click to toggle source
# File lib/petergate/action_controller/base.rb, line 18
def except_actions(arr = [])
  all_actions - arr
end
inherited(subclass) click to toggle source
# File lib/petergate/action_controller/base.rb, line 40
def inherited(subclass)
  subclass.instance_variable_set("@_controller_rules", instance_variable_get("@_controller_rules"))
  subclass.instance_variable_set("@_controller_message", instance_variable_get("@_controller_message"))
end