私のユーザーコントローラーには、ユーザーのサブリソースへのアクセスを提供する投稿機能があります。これには、/users/{id}/posts エンドポイントからアクセスします。
$id をリクエスト URL から UserPolicy メソッドに渡したい:
public function resource($user, $id)
{
return $user->id === $id;
}
私の UserController メソッド:
public function posts(Request $request, $id)
{
$this->authorize('resource', $id);
return response()->json(['events' => []], 200);
}
とにかくこれを行うことはありますか?Policy メソッドがオブジェクト以外のものを無視しているように見えることに気付きました。
編集:
現在、この承認にヘルパー メソッドを使用していますが、ポリシーに移動してすべてのルールをまとめたいと考えています。
public function authorizeResource($id)
{
if ((int)$id !== (int)$this->auth->user()->id) {
throw new \Exception;
}
}