Inicio Rápido

Instalación

Instale el plugin con composer desde el directorio ROOT de su proyecto CakePHP (donde se encuentra el archivo composer.json)

php composer.phar require "cakephp/authorization:^2.0"

Cargue el complemento agregando la siguiente declaración en el archivo src/Application.php de su proyecto:

$this->addPlugin('Authorization');

Empezando

El plugin Authorization se integra en su aplicación como una capa middleware y, opcionalmente, un componente para facilitar la verificación de la autorización. Primero, apliquemos el middleware. En src/Application.php agregue lo siguiente a las importaciones de la clase:

use Authorization\AuthorizationService;
use Authorization\AuthorizationServiceInterface;
use Authorization\AuthorizationServiceProviderInterface;
use Authorization\Middleware\AuthorizationMiddleware;
use Authorization\Policy\OrmResolver;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

Agregue la AuthorizationServiceProviderInterface a las interfaces implementadas en su aplicación:

class Application extends BaseApplication implements AuthorizationServiceProviderInterface

Luego agregue lo siguiente a su método middleware():

// Add authorization (after authentication if you are using that plugin too).
$middleware->add(new AuthorizationMiddleware($this));

AuthorizationMiddleware llamará a un método hook en su aplicación cuando comience a manejar la request. Este método hook permite a su aplicación definir el AuthorizationService que quiere usar. Agregue el siguiente método a su src/Application.php:

public function getAuthorizationService(ServerRequestInterface $request): AuthorizationServiceInterface
{
    $resolver = new OrmResolver();

    return new AuthorizationService($resolver);
}

Esto configura /policy-resolvers que hará coincidir las entidades ORM con sus clases policy.

A continuación, agregue el AuthorizationComponent a AppController. En src/Controller/AppController.php agregue lo siguiente al método initialize():

$this->loadComponent('Authorization.Authorization');

Al cargar /component, podremos verificar la autorización por acción más fácilmente. Por ejemplo, podemos hacer:

public function edit($id = null)
{
    $article = $this->Article->get($id);
    $this->Authorization->authorize($article, 'update');

    // Rest of action
}

Al llamar authorize podemos usar nuestro Policy para hacer cumplir las reglas de control de acceso de nuestra aplicación. Puede verificar los permisos en cualquier lugar utilizando identity stored in the request.

Otras lecturas