0
ポリシークラスを使用して、一部のユーザ(作成者または管理者)がポストモデルからレコードを更新および削除する権限を与えています。それは単純なCRUDです。質問は、具体的なメソッドのポリシーチェックを一度に実行するにはどうすればいいですか?たとえば、PostControllerのコンストラクタでミドルウェアを使用して、ユーザーがログに記録されているかどうかを確認できますが、パラメータを必要とするポリシーに似たようなことを行うにはどうすればよいですか?コントローラコンストラクタのラーベルポリシー
のPostController
public function __construct()
{
$this->middleware('auth', ['except' => ['index', 'show']]);
}
PostPolicy
class PostPolicy
{
use HandlesAuthorization;
public function before($user)
{
if ($user->hasRole('admin')) {
return true;
}
}
public function manage($user, $post)
{
return $user->id == $post->user_id;
}
}
AuthServiceProvider
public function boot()
{
$this->registerPolicies();
Gate::define('manage-post', 'App\Policies\[email protected]');
}
Iこれを試しました:
$this->middleware('can:manage-post', ['except' => ['index', 'show']]);
しかし、それは動作しませんでした。
ありがとうございます。
ルート定義を確認する必要があります – lagbox