Class: Reeve::Authorization::Authorizer

Inherits:
Object
  • Object
show all
Defined in:
lib/reeve/authorization/authorizer.rb

Overview

The envelope's authorizer collaborator: turns a guard declaration plus a principal into a Decision, through whichever adapter the policy speaks.

It deliberately does not rescue. The envelope converts a raising policy into policy_error and fails closed; swallowing it here would hide which policy broke.

Instance Method Summary collapse

Instance Method Details

#authorize(context:, guard:) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/reeve/authorization/authorizer.rb', line 11

def authorize(context:, guard:)
  adapter = Adapter.resolve(guard.policy)

  adapter.authorize(
    principal: context.principal,
    policy: guard.policy,
    action: guard.action,
    record: nil
  )
end