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