クイックスタート
インストール
CakePHP プロジェクトのルートディレクトリで Composer を使ってプラグインを追加します。
bash
php composer.phar require "cakephp/authorization:^3.0"1
Authorization 3.x は CakePHP 5 に対応しています。
src/Application.php でプラグインを読み込みます。
php
$this->addPlugin('Authorization');1
はじめに
Authorization プラグインはミドルウェアとして組み込まれ、必要に応じて コンポーネントとしても利用できます。
php
use Authorization\AuthorizationService;
use Authorization\AuthorizationServiceInterface;
use Authorization\AuthorizationServiceProviderInterface;
use Authorization\Middleware\AuthorizationMiddleware;
use Authorization\Policy\OrmResolver;
use Psr\Http\Message\ServerRequestInterface;1
2
3
4
5
6
2
3
4
5
6
Application に AuthorizationServiceProviderInterface を追加します。
php
class Application extends BaseApplication implements AuthorizationServiceProviderInterface1
middleware() に Authorization を追加します。
php
public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue
{
$middlewareQueue->add(new ErrorHandlerMiddleware(Configure::read('Error')))
->add(new AssetMiddleware())
->add(new RoutingMiddleware($this))
->add(new BodyParserMiddleware())
->add(new AuthenticationMiddleware($this))
->add(new AuthorizationMiddleware($this));
return $middlewareQueue;
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
AuthorizationMiddleware は AuthenticationMiddleware の後に置く必要が あります。
php
public function getAuthorizationService(ServerRequestInterface $request): AuthorizationServiceInterface
{
$resolver = new OrmResolver();
return new AuthorizationService($resolver);
}1
2
3
4
5
6
2
3
4
5
6
これは ポリシーリゾルバー を構成するための基本設定です。
AppController で component を読み込みます。
php
public function initialize(): void
{
parent::initialize();
$this->loadComponent('Authorization.Authorization');
}1
2
3
4
5
2
3
4
5
php
public function edit($id = null)
{
$article = $this->Articles->get($id);
$this->Authorization->authorize($article, 'update');
}1
2
3
4
5
2
3
4
5
authorize() を使うことで、Policies によるアクセス制御を 適用できます。