Module: Zuul::ActionController::ClassMethods
- Defined in:
- lib/zuul/action_controller.rb
Class Method Summary collapse
Instance Method Summary collapse
- #access_control(*args, &block) ⇒ Object
- #acl_filters ⇒ Object
- #filter_keys ⇒ Object
-
#parse_access_control_args(*args) ⇒ Object
def deny_permissions(permissions, *args, &block) end alias_method :deny_permission, :deny_permissions.
Class Method Details
.extended(base) ⇒ Object
53 54 55 56 57 |
# File 'lib/zuul/action_controller.rb', line 53 def self.extended(base) base.send :cattr_accessor, :used_acl_filters base.send :class_variable_set, :@@used_acl_filters, 0 base.send :attr_accessor, :acl_dsl end |
Instance Method Details
#access_control(*args, &block) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/zuul/action_controller.rb', line 59 def access_control(*args, &block) opts, filter_args = parse_access_control_args(*args) callback_method = "_zuul_callback_before_#{acl_filters.length+1}".to_sym define_method callback_method do |controller| controller.acl_dsl ||= DSL::Base.new(controller) controller.acl_dsl.configure opts controller.acl_dsl.execute &block self.class.used_acl_filters += 1 if self.class.used_acl_filters == self.class.acl_filters.length self.class.used_acl_filters = 0 raise Exceptions::AccessDenied if !controller.acl_dsl. && controller.acl_dsl.mode != :quiet end end append_before_filter "#{callback_method.to_s}(self)", filter_args end |
#acl_filters ⇒ Object
77 78 79 |
# File 'lib/zuul/action_controller.rb', line 77 def acl_filters _process_action_callbacks.select { |f| f.kind == :before && f.instance_variable_get(:@filter).match(/\A_zuul_callback_before_.*/) } end |
#filter_keys ⇒ Object
106 107 108 |
# File 'lib/zuul/action_controller.rb', line 106 def filter_keys [:except, :only] end |
#parse_access_control_args(*args) ⇒ Object
def deny_permissions(permissions, *args, &block) end alias_method :deny_permission, :deny_permissions
98 99 100 101 102 103 104 |
# File 'lib/zuul/action_controller.rb', line 98 def parse_access_control_args(*args) args = args[0] if args.is_a?(Array) args = {} if args.nil? filter_args = args.select { |k,v| filter_keys.include?(k) } args.reject! { |k| filter_keys.include?(k) } return [args, filter_args] end |