class SimpleNavigationAcl::Base

Attributes

contexts[R]
current_user_method[RW]
entity[RW]
verify_method[RW]

Public Class Methods

apply_acl(navigation, id, context) click to toggle source
# File lib/simple_navigation_acl/base.rb, line 36
def apply_acl(navigation, id, context)
  context=:default if context.nil?
  rules_keys = id==:all ? :all : SimpleNavigationAcl::AclRule.where(context: context).where(id: id).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
contexts=(contexts) click to toggle source
# File lib/simple_navigation_acl/base.rb, line 15
def contexts=(contexts)
  contexts = [contexts] unless contexts.is_a?(Array)
  @contexts = contexts.map(&:to_sym)
  @contexts.uniq!
end
filter_simple_navigation_with_rules!(simple_navigation_item_container, keys) click to toggle source
# File lib/simple_navigation_acl/base.rb, line 44
def filter_simple_navigation_with_rules!(simple_navigation_item_container, keys)
  unless keys==:all
    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
end
navigations(obj_caller=nil, navigation_context=nil) click to toggle source

Private Class Methods

get_nav_items(nav, context=:default) click to toggle source
# File lib/simple_navigation_acl/base.rb, line 59
def get_nav_items(nav, context=:default)
  nav.items.map do |item|
    items = {key: item.key, name: item.name, url: item.url, level: nav.level, context: context}
    items[:items] = get_nav_items(item.sub_navigation, context) if item.sub_navigation.present?
    items
  end
end