在我的用户控制器中,我有一个发布功能,它可以访问用户的子资源。这是通过 /users/{id}/posts 端点访问的。
我希望将请求 URL 中的 $id 传递给 UserPolicy 方法:
public function resource($user, $id)
{
return $user->id === $id;
}
我的用户控制器方法:
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;
}
}