モデルのポリシーを作成するには、以下の手順を実行します:
-
ポリシーの作成
php artisan make:policy
コマンドを使用して、ポリシークラスを作成します。以下のコマンドをターミナルで実行します:php artisan make:policy PostPolicy --model=Post
このコマンドは、
Post
モデルに関連付けられたPostPolicy
クラスを生成します。 -
ポリシーメソッドの定義 生成されたポリシーファイル(
PostPolicy.php
)内で、各アクションに対してポリシーメソッドを定義します。たとえば、view
メソッドを追加すると、ユーザーが特定の投稿を表示できるかどうかを制御できます。public function view(User $user, Post $post) { // 認可ロジックを実装する return $user->id === $post->user_id; }
この例では、
$user
はログインしているユーザーオブジェクトを表し、$post
は表示しようとしている投稿オブジェクトを表します。戻り値としてtrue
を返すと、ユーザーによる表示が許可されます。 -
ポリシーの登録 作成したポリシーを利用するために、
AuthServiceProvider
クラスにポリシーを登録する必要があります。AuthServiceProvider
クラスはapp/Providers
ディレクトリにあります。AuthServiceProvider
クラスの$policies
プロパティに、モデルとポリシーのマッピングを追加します。例えば、Post
モデルとPostPolicy
を関連付けるには、以下のように$policies
プロパティを変更します:protected $policies = [ Post::class => PostPolicy::class, ];
これにより、Laravelは
Post
モデルに対してPostPolicy
を使用するようになります。
以上の手順を実行することで、モデルのポリシーを作成し、認可ロジックを実装することができます。ポリシーを使用すると、特定のユーザーに対してアクションの許可または拒否を柔軟に制御できます。