Module: Caboose::AccessControl
- Defined in:
- lib/acl_system2/caboose/access_control.rb
Defined Under Namespace
Modules: ClassMethods Classes: AccessSentry
Class Method Summary collapse
Instance Method Summary collapse
-
#access_context(context = {}) ⇒ Object
the current access context; will be created if not setup will add current_user and merge any other elements of context.
-
#access_handler ⇒ Object
return the active access handler, fallback to RoleHandler implement #retrieve_access_handler to return non-default handler.
- #default_access_context ⇒ Object
- #default_access_context=(defaults) ⇒ Object
- #permit?(logicstring, context = {}) ⇒ Boolean
-
#restrict_to(logicstring, context = {}) ⇒ Object
restrict_to “admin | moderator” do link_to “foo” end.
Class Method Details
.included(subject) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/acl_system2/caboose/access_control.rb', line 6 def self.included(subject) subject.extend(ClassMethods) if subject.respond_to? :helper_method subject.helper_method(:permit?) subject.helper_method(:restrict_to) end end |
Instance Method Details
#access_context(context = {}) ⇒ Object
the current access context; will be created if not setup will add current_user and merge any other elements of context
53 54 55 |
# File 'lib/acl_system2/caboose/access_control.rb', line 53 def access_context(context = {}) default_access_context.merge(context) end |
#access_handler ⇒ Object
return the active access handler, fallback to RoleHandler implement #retrieve_access_handler to return non-default handler
43 44 45 46 47 48 49 |
# File 'lib/acl_system2/caboose/access_control.rb', line 43 def access_handler if respond_to?(:retrieve_access_handler) @handler ||= retrieve_access_handler else @handler ||= RoleHandler.new end end |
#default_access_context ⇒ Object
57 58 59 60 61 |
# File 'lib/acl_system2/caboose/access_control.rb', line 57 def default_access_context @default_access_context ||= {} @default_access_context[:user] = send(:current_user) if respond_to?(:current_user) @default_access_context end |
#default_access_context=(defaults) ⇒ Object
63 64 65 |
# File 'lib/acl_system2/caboose/access_control.rb', line 63 def default_access_context=(defaults) @default_access_context = defaults end |
#permit?(logicstring, context = {}) ⇒ Boolean
67 68 69 |
# File 'lib/acl_system2/caboose/access_control.rb', line 67 def permit?(logicstring, context = {}) access_handler.process(logicstring, access_context(context)) end |
#restrict_to(logicstring, context = {}) ⇒ Object
restrict_to “admin | moderator” do
link_to "foo"
end
74 75 76 77 78 79 80 81 |
# File 'lib/acl_system2/caboose/access_control.rb', line 74 def restrict_to(logicstring, context = {}) return false if current_user.nil? result = '' if permit?(logicstring, context) result = yield if block_given? end result end |