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

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_handlerObject

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_contextObject



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

Returns:

  • (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