Class: SimpleNavigationAcl::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_navigation_acl/base.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.contextsObject

Returns the value of attribute contexts.



13
14
15
# File 'lib/simple_navigation_acl/base.rb', line 13

def contexts
  @contexts
end

.current_user_methodObject

Returns the value of attribute current_user_method.



11
12
13
# File 'lib/simple_navigation_acl/base.rb', line 11

def current_user_method
  @current_user_method
end

.entityObject

Returns the value of attribute entity.



11
12
13
# File 'lib/simple_navigation_acl/base.rb', line 11

def entity
  @entity
end

.verify_methodObject

Returns the value of attribute verify_method.



11
12
13
# File 'lib/simple_navigation_acl/base.rb', line 11

def verify_method
  @verify_method
end

Class Method Details

.apply_acl(navigation, id, context) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/simple_navigation_acl/base.rb', line 36

def apply_acl(navigation, id, context)
  context=:default if context.nil?
  rules_keys = SimpleNavigationAcl::AclRule.where(id: id, context: context).pluck(:key)
  container = navigation.is_a?(SimpleNavigation::Configuration) ? navigation.instance_variable_get(:@primary_navigation) : navigation
  filter_simple_navigation_with_rules!(container, rules_keys)
  true
end

.filter_simple_navigation_with_rules!(simple_navigation_item_container, keys) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/simple_navigation_acl/base.rb', line 44

def filter_simple_navigation_with_rules!(simple_navigation_item_container, keys)
  simple_navigation_item_container.items.delete_if do |simple_navigation_item|
    if keys.include?(simple_navigation_item.key.to_s)
      sub_navigation = simple_navigation_item.sub_navigation
      filter_simple_navigation_with_rules!(sub_navigation, keys) if sub_navigation
      false
    else
      true
    end
  end
end


21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/simple_navigation_acl/base.rb', line 21

def navigations(obj_caller=nil, navigation_context=nil)
  navigations = {}
  contexts = if navigation_context.nil?
               SimpleNavigationAcl::Base.contexts
             else
               navigation_context.is_a?(Array) ? navigation_context : [navigation_context]
             end
  contexts.each do |context|
    SimpleNavigation::Helpers.load_config({context: context}, obj_caller)
    primary_navigation = SimpleNavigation.config.primary_navigation
    navigations[context] = get_nav_items(primary_navigation, context)
  end
  navigations
end