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