Sha256: 5bc642d322403e4979382156d8d382f90c5a8d4fd0d3be827dd766e1453c8c68
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
require "ingress/permissions_repository" require "ingress/copy_permissions_repository_into_role" require "ingress/build_permissions_repository_for_role" module Ingress class Permissions class << self def permissions_repository @permissions_repository ||= PermissionsRepository.new end def inherits(permissions_class) role_identifier = :dummy if permissions_class @permissions_repository = permissions_repository.merge( Services::CopyPermissionsRepositoryIntoRole.perform(role_identifier, permissions_class.permissions_repository), ) end end def define_role_permissions(role_identifier = nil, permissions_class = nil, &block) if role_identifier.nil? role_identifier = :dummy end if permissions_class @permissions_repository = permissions_repository.merge( Services::CopyPermissionsRepositoryIntoRole.perform(role_identifier, permissions_class.permissions_repository), ) end if block_given? @permissions_repository = permissions_repository.merge(Services::BuildPermissionsRepositoryForRole.perform(role_identifier, &block)) end end end attr_reader :user def initialize(user) @user = user end def can?(action, subject) find_matching_rules(action, subject).any? do |rule| rule.match?(action, subject, user) end end def user_role_identifiers [] end private def find_matching_rules(action, subject) user_role_identifiers.reduce([]) do |rules, role_identifier| rules += self.class.permissions_repository.rules_for(role_identifier, action, subject) rules end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ingress-0.1.0 | lib/ingress/permissions.rb |