承認の確認

承認ミドルウェアをアプリケーションに適用し、リクエストにIDを追加したら、承認の確認を開始できます。ミドルウェアは、認証関連のメソッドを追加するIdentityDecoratorを使用して、各リクエストのIDをラップします。

IDをモデル、サービス、またはテンプレートに渡すことができるため、アプリケーション内のどこでも簡単に承認を確認できます。デフォルトのデコレータをカスタマイズまたは置き換える方法については、アイデンティティデコレータのセクションを参照してください。

単一リソースの承認の確認

canメソッドを使用すると、単一のリソースの承認を確認できます。通常、これはORMエンティティ、またはアプリケーションドメインオブジェクトです。ポリシーは、承認を決定するためのロジックを提供します:

// Get the identity from the request
$user = $this->request->getAttribute('identity');

// Check authorization on $article
if ($user->can('delete', $article)) {
    // Do delete operation
}

ポリシーがポリシー結果オブジェクトを返す場合は、canResult()が結果インスタンスを返すので、それらのステータスを確認してください:

// Assuming our policy returns a result.
$result = $user->canResult('delete', $article);
if ($result->getStatus()) {
    // Do deletion
}

スコープ条件の適用

ページネーションされたクエリのようなオブジェクトのコレクションに承認チェックを適用する必要がある場合、現在のユーザーがアクセスできるレコードのみをフェッチすることがよくあります。 このプラグインは、この概念を「スコープ」として実装します。 スコープポリシーを使用すると、クエリまたは結果セットを「スコープ」して、更新されたリストまたはクエリオブジェクトを返すことができます:

// Get the identity from the request
$user = $this->request->getAttribute('identity');

// Apply permission conditions to a query so only
// the records the current user has access to are returned.
$query = $user->applyScope('index', $query);

AuthorizationComponentをコントローラーアクションで使用して、失敗時に例外を発生させる承認チェックを合理化できます。