Oihana PHP Arango

AuthorizationContextTrait

Resolves a controller's request-scoped authorization context from the DI container — the capability enforcer and the permission-subject resolver — and wires them in, in one place.

Both DocumentsController and FederatedSearchController (and any other capability-aware Arango controller) need the exact same boilerplate right after parent::__construct(): look up CapabilityEnforcerInterface and PermissionSubjectResolverInterface in the container, guard them with an instanceof, and hand them to initializeCapabilities() / initializePermissionSubjectResolver(). This trait factors that out.

The consuming class must:

  • expose $this->container (provided by the base Controller) ;
  • provide initializeCapabilities() — from CapabilityContextTrait (pulled in by DocumentsControllerCapabilitiesTrait) ;
  • provide initializePermissionSubjectResolver() — from PermissionAuthorizerTrait.

Usage:

public function __construct( Container $container , array $init = [] )
{
    parent::__construct( $container , $init ) ;
    $this->initializeModel( $init )
         // ...
         ->initializeAuthorizationContext( $init ) ;
}
Tags
author

Marc Alcaraz (ekameleon)

Table of Contents

Methods

initializeAuthorizationContext()  : static
Resolves the capability enforcer and the permission-subject resolver from the container (each guarded by an `instanceof`, null when absent) and wires them through `initializeCapabilities()` and `initializePermissionSubjectResolver()`.

Methods

initializeAuthorizationContext()

Resolves the capability enforcer and the permission-subject resolver from the container (each guarded by an `instanceof`, null when absent) and wires them through `initializeCapabilities()` and `initializePermissionSubjectResolver()`.

protected initializeAuthorizationContext([array<string, mixed> $init = [] ]) : static
Parameters
$init : array<string, mixed> = []

Same array passed to the controller constructor.

Tags
throws
DependencyException
NotFoundException
Return values
static
On this page

Search results