Class: CanTango::PermissionEngine::Factory

Inherits:
Object
  • Object
show all
Defined in:
lib/cantango/permission_engine/factory.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ability) ⇒ Factory

creates the factory for the ability note that the ability contains the roles and role groups of the user (or account)

Parameters:

  • the (Permits::Ability)

    ability



9
10
11
# File 'lib/cantango/permission_engine/factory.rb', line 9

def initialize ability
  @ability = ability
end

Instance Attribute Details

#abilityObject

Returns the value of attribute ability.



4
5
6
# File 'lib/cantango/permission_engine/factory.rb', line 4

def ability
  @ability
end

Instance Method Details

#build!Object



13
14
15
16
17
18
# File 'lib/cantango/permission_engine/factory.rb', line 13

def build!
  @evaluators ||= permission_types.inject([]) do |res, type|
    res << collector(type).build
    res
  end.flatten.compact
end

#collector(type) ⇒ Object



20
21
22
23
# File 'lib/cantango/permission_engine/factory.rb', line 20

def collector(type)
  rules = store.send(:"#{type}_rules")
  CanTango::PermissionEngine::Collector.new(ability, rules, type)
end

#config_pathObject



45
46
47
# File 'lib/cantango/permission_engine/factory.rb', line 45

def config_path
  permission_engine.config_path
end

#optionsObject



25
26
27
# File 'lib/cantango/permission_engine/factory.rb', line 25

def options
  ability.options
end

#permission_typesObject



41
42
43
# File 'lib/cantango/permission_engine/factory.rb', line 41

def permission_types
  permission_engine.types
end

#storeObject



29
30
31
# File 'lib/cantango/permission_engine/factory.rb', line 29

def store
  store_class.new :permissions, store_options
end

#store_classObject



33
34
35
# File 'lib/cantango/permission_engine/factory.rb', line 33

def store_class
  permission_engine.store.default_class
end

#store_optionsObject



37
38
39
# File 'lib/cantango/permission_engine/factory.rb', line 37

def store_options
  permission_engine.store.options.merge(:path => config_path)
end