私のLaravel 5.4アプリケーションでは、ユーザーがプロジェクトを作成し、そのプロジェクト内に投稿することができます。Laravel Gateメソッドが呼び出されていない
私はユーザーがアクセス権のないプロジェクト内で投稿を作成したり編集したりしないようにしようとしています。 これを行うには、ここで説明するようにGateを実装しました。https://laravel.com/docs/5.4/authorization#gates ゲートは、ユーザーがプロジェクトのオーナーであるかどうかを確認します。 PostControllerで
Gate::define('create-post', function ($user, $project) {
Log::info($project) // !!! Never gets called
return $project->owner_id == $user->id;
});
私は門を呼ぶ::問題は、私が呼ばれることは決してありませんゲート用に定義されたコードである引数
if (Gate::denies('create-post', $project)) {
abort(403);
}
としてプロジェクトを渡し拒否します。代わりに、常にfalseを返し、403エラーに進みます。 しかし、プロジェクトを引数として渡さないとコードが呼び出されますが、それは役に立たなくなります。
また、作成メソッドが1つの引数($ user)しか必要とせず、$プロジェクトを渡そうとするとGateと同じ方法で失敗するので、この場合はポリシーを使用できません。
これはバグですか?この機能を実装する別の方法がありますか?ありがとう。