class Rolypoly::RoleScopes

Public Class Methods

new(role_scopes = []) click to toggle source
# File lib/rolypoly/role_scopes.rb, line 12
def initialize(role_scopes = [])
  @role_scopes = Array(role_scopes)
end

Public Instance Methods

actions() click to toggle source
# File lib/rolypoly/role_scopes.rb, line 41
def actions
  map(&:actions).each_with_object(Set.new) { |action_set, memo| memo.merge(action_set) }
end
all_access?(current_user_roles) click to toggle source
# File lib/rolypoly/role_scopes.rb, line 37
def all_access?(current_user_roles)
  any? { |role_scope| role_scope.allow?(current_user_roles, nil) }
end
allowed_roles(user_role_objects, action) click to toggle source
# File lib/rolypoly/role_scopes.rb, line 20
def allowed_roles(user_role_objects, action)
  return [] if empty?

  reduce([]) do |allowed_role_objects, role_scope|
    allowed_role_objects | role_scope.allowed_roles(user_role_objects, action)
  end
end
initialize_copy(other) click to toggle source
# File lib/rolypoly/role_scopes.rb, line 16
def initialize_copy(other)
  @role_scopes = @role_scopes.map(&:dup)
end
scope_hash(user_role_objects) click to toggle source
# File lib/rolypoly/role_scopes.rb, line 28
def scope_hash(user_role_objects)
  actions.each_with_object({}) do |action, memo|
    roles = allowed_roles(user_role_objects, action)
    ids = roles.map(&:resource_id).compact.uniq
    memo[action] = ids if ids.any?
    memo
  end
end

Private Instance Methods

build_role_scope(roles = nil, actions = nil, resource = nil) click to toggle source
# File lib/rolypoly/role_scopes.rb, line 45
        def build_role_scope(roles = nil, actions = nil, resource = nil)
  new_role_scope = Rolypoly::RoleScope.new(roles, actions, resource)
  @role_scopes << new_role_scope
  new_role_scope
end