class Ingress::Permissions
Attributes
user[R]
Public Class Methods
define_role_permissions(role_identifier = nil, permissions_class = nil, &block)
click to toggle source
# File lib/ingress/permissions.rb, line 22 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
inherits(permissions_class)
click to toggle source
# File lib/ingress/permissions.rb, line 12 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
new(user)
click to toggle source
# File lib/ingress/permissions.rb, line 41 def initialize(user) @user = user end
permissions_repository()
click to toggle source
# File lib/ingress/permissions.rb, line 8 def permissions_repository @permissions_repository ||= PermissionsRepository.new end
Public Instance Methods
can?(action, subject, options = {})
click to toggle source
# File lib/ingress/permissions.rb, line 45 def can?(action, subject, options = {}) user_role_identifiers.any? do |role_identifier| rules = self.class.permissions_repository.rules_for(role_identifier, action, subject) cannot_match = rules.reject(&:allows?).any? do |rule| rule.match?(action, subject, user, options) end break false if cannot_match rules.select(&:allows?).any? do |rule| rule.match?(action, subject, user, options) end end end
user_role_identifiers()
click to toggle source
# File lib/ingress/permissions.rb, line 60 def user_role_identifiers [] end