class Permify::Clearance

Clearance: Official authorization for something to proceed or take place

Attributes

permissions[R]
repo[R]

Public Class Methods

new(repo) click to toggle source
# File lib/permify/clearance.rb, line 4
def initialize(repo)
  @repo = repo
  @permissions = Permify::PermissionMap.new
end

Public Instance Methods

add(resource, action) click to toggle source
# File lib/permify/clearance.rb, line 9
def add(resource, action)
  permission = resolve_to_permission(resource, action)
  permissions.store(resource, action, permission)
end
find(resource, action) click to toggle source
# File lib/permify/clearance.rb, line 14
def find(resource, action)
  if !repo.permission_combination?(resource, action)
    permissions.find(resource, action) || Permify::Permission::Null.new
  else
    combination = repo.find_permission_combination(resource, action)
    combination.resolve(self)
  end
end

Private Instance Methods

resolve_to_permission(resource, action_name) click to toggle source
# File lib/permify/clearance.rb, line 26
def resolve_to_permission(resource, action_name)
  repo.find_permission(resource, action_name)
end