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