class Ddr::Auth::Roles::RoleSetQuery

RoleSet query interface

@api private

Attributes

criteria[R]
role_set[R]

Public Class Methods

new(role_set) click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 15
def initialize(role_set)
  @role_set = role_set
  @criteria = {}
end

Public Instance Methods

agent(a) click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 37
def agent(a)
  where(agent: a)
end
Also aliased as: group
group(a)
Alias for: agent
in_policy_scope() click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 29
def in_policy_scope
  scope(Roles::POLICY_SCOPE)
end
in_resource_scope() click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 33
def in_resource_scope
  scope(Roles::RESOURCE_SCOPE)
end
merge(other_query) click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 47
def merge(other_query)
  where(other_query.criteria)
end
result() click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 51
def result
  matching_roles = role_set.select { |role| matches_all?(role) }
  RoleSet.new(roles: matching_roles)
end
role_type(r) click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 42
def role_type(r)
  where(role_type: r)
end
Also aliased as: type
scope(s) click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 25
def scope(s)
  where(scope: s)
end
type(r)
Alias for: role_type
where(conditions={}) click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 20
def where(conditions={})
  criteria.merge!(conditions)
  self
end

Private Instance Methods

matches_all?(role) click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 63
def matches_all?(role)
  criteria.all? { |key, value| matches_one?(role, key, value) }
end
matches_one?(role, key, value) click to toggle source
# File lib/ddr/auth/roles/role_set_query.rb, line 67
def matches_one?(role, key, value)
  Array(value).include? role.send(key)
end
permissions_for_agents_in_scope(agents, scope) click to toggle source

Return a list of the permissions granted to any of the agents in the given scope

# File lib/ddr/auth/roles/role_set_query.rb, line 59
def permissions_for_agents_in_scope(agents, scope)
  agent(agents).scope(scope).permissions
end