Class: Rabarber::Core::Rule

Inherits:
Object
  • Object
show all
Defined in:
lib/rabarber/core/rule.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(action, roles, context, dynamic_rule, negated_dynamic_rule) ⇒ Rule

Returns a new instance of Rule.



8
9
10
11
12
13
14
# File 'lib/rabarber/core/rule.rb', line 8

def initialize(action, roles, context, dynamic_rule, negated_dynamic_rule)
  @action = action
  @roles = Array(roles)
  @context = context
  @dynamic_rule = dynamic_rule
  @negated_dynamic_rule = negated_dynamic_rule
end

Instance Attribute Details

#actionObject (readonly)

Returns the value of attribute action.



6
7
8
# File 'lib/rabarber/core/rule.rb', line 6

def action
  @action
end

#contextObject (readonly)

Returns the value of attribute context.



6
7
8
# File 'lib/rabarber/core/rule.rb', line 6

def context
  @context
end

#dynamic_ruleObject (readonly)

Returns the value of attribute dynamic_rule.



6
7
8
# File 'lib/rabarber/core/rule.rb', line 6

def dynamic_rule
  @dynamic_rule
end

#negated_dynamic_ruleObject (readonly)

Returns the value of attribute negated_dynamic_rule.



6
7
8
# File 'lib/rabarber/core/rule.rb', line 6

def negated_dynamic_rule
  @negated_dynamic_rule
end

#rolesObject (readonly)

Returns the value of attribute roles.



6
7
8
# File 'lib/rabarber/core/rule.rb', line 6

def roles
  @roles
end

Instance Method Details

#dynamic_rule_followed?(controller_instance) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/rabarber/core/rule.rb', line 29

def dynamic_rule_followed?(controller_instance)
  !!(execute_dynamic_rule(controller_instance, false) && execute_dynamic_rule(controller_instance, true))
end

#roles_permitted?(roleable, controller_instance) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
24
25
26
27
# File 'lib/rabarber/core/rule.rb', line 20

def roles_permitted?(roleable, controller_instance)
  processed_context = get_context(controller_instance)
  roleable_roles = roleable.roles(context: processed_context)

  return false if Rabarber::Configuration.instance.must_have_roles && roleable_roles.empty?

  roles.empty? || roles.intersection(roleable_roles).any?
end

#verify_access(roleable, controller_instance) ⇒ Object



16
17
18
# File 'lib/rabarber/core/rule.rb', line 16

def verify_access(roleable, controller_instance)
  roles_permitted?(roleable, controller_instance) && dynamic_rule_followed?(controller_instance)
end