class Ingress::PermissionsRepository

Attributes

role_rules[R]

Public Class Methods

new() click to toggle source
# File lib/ingress/permissions_repository.rb, line 7
def initialize
  @role_rules = Hashes.role_rules
  @role_subject_action_rule = Hashes.role_subject_action_rule
end

Public Instance Methods

add_permission(role_identifier, allow, action, subject, conditions = nil) click to toggle source
# File lib/ingress/permissions_repository.rb, line 12
def add_permission(role_identifier, allow, action, subject, conditions = nil)
  rule = PermissionRule.new(allows: allow, action: action, subject: subject, conditions: conditions)
  add_rule(role_identifier, rule)
end
copy_to_role(role_identifier, permission_repository) click to toggle source
# File lib/ingress/permissions_repository.rb, line 37
def copy_to_role(role_identifier, permission_repository)
  permission_repository.role_rules.each_pair do |_, rules|
    rules.each do |rule|
      add_rule(role_identifier, rule)
    end
  end
  self
end
merge(permission_repository) click to toggle source
# File lib/ingress/permissions_repository.rb, line 28
def merge(permission_repository)
  permission_repository.role_rules.each_pair do |role_identifier, rules|
    rules.each do |rule|
      add_rule(role_identifier, rule)
    end
  end
  self
end
rules_for(role_identifier, action, subject) click to toggle source
# File lib/ingress/permissions_repository.rb, line 17
def rules_for(role_identifier, action, subject)
  rules = []

  rules += find_rules(role_identifier, action, subject)
  rules += find_rules(role_identifier, "*", "*")
  rules += find_rules(role_identifier, action, "*")
  rules += find_rules(role_identifier, "*", subject)

  rules
end

Private Instance Methods

add_rule(role_identifier, rule) click to toggle source
# File lib/ingress/permissions_repository.rb, line 58
def add_rule(role_identifier, rule)
  @role_rules[role_identifier] << rule
  @role_subject_action_rule[role_identifier][rule.subject][rule.action] << rule
end
find_rules(role_identifier, action, subject) click to toggle source
# File lib/ingress/permissions_repository.rb, line 48
def find_rules(role_identifier, action, subject)
  rules = []
  rules += @role_subject_action_rule[role_identifier][subject][action]
  unless subject == "*"
    rules += @role_subject_action_rule[role_identifier][subject.class][action]
  end

  rules
end