CakePHP 4 の DebugKit を Authorization の対象外にする方法
はじめに
一昨日の投稿では、CakePHP 4 で Authorization プラグインを用いたアクセス権限の設定方法をご紹介しました。
Authorization プラグインを導入すると、基本的には全画面にアクセス可否の処理を書く必要があります。
ここで問題になるのが DebugKit で、これも Authorization の対象となり、DebugKit ツールバー(画面右下に出る CakePHP アイコンの部分)がエラー表示となってしまいます。
そこで今日は CakePHP 4 で Authorization を導入した際に DebugKit を対象外にする方法をご紹介します。
- CakePHP
- 4.1.2
- CakePHP Authorization
- 2.0.0
- CakePHP DebugKit
- 4.3.1
今回は「CakePHP 4 で Authorization プラグインを用いてアクセス権限を設定する方法」で紹介したサンプルプログラムで動作確認しています。
対応方法
DebugKit を Authorization の対象外にするには、Application.php に追加した getAuthorizationService() を下記のように変更すれば OK です。
/src/Application.php
public function getAuthorizationService(ServerRequestInterface $request): AuthorizationServiceInterface
{
$resolver = new OrmResolver();
$service = new AuthorizationService($resolver);
// DebugKit は対象外
if ($request->getParam('plugin') === 'DebugKit') {
$service->skipAuthorization();
}
return $service;
}
また、ミドルウェアで「'requireAuthorizationCheck' => false」を指定する場合も、アクセス可否の処理が必須ではなくなるので、DebugKit のエラーは出なくなります。
/src/Application.php
public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue
{
$middlewareQueue
...
// ↓ 第2引数を追加
->add(new AuthorizationMiddleware($this, [
'requireAuthorizationCheck' => false
]));