我是 Laravel API 的新手。有一个更新功能,只允许用户更新自己的帖子。有效。当用户尝试更新其他用户的帖子时,它也可以正常工作,但是会显示像此图像一样的错误。实际上我希望它显示在响应 json 中。
我想显示这样的消息
{
"status": "error",
"message": "This action is unauthorized",
}
这是我的 PostController 代码。
public function update(Request $request, Post $post)
{
$this->authorize('update', $post);
//this will check the authorization of user but how to make if else statement, if the post belong to the user it will show this json below but if the post belong to other, it will show error message(response json)
$post->content = $request->get('content', $post->content);
$post->save();
return fractal()
->item($post)
->transformWith(new PostTransformer)
->toArray();
}
PostPolicy 的此代码
public function update(User $user, Post $post)
{
return $user->ownsPost($post);
}
这是用户模型的代码
public function ownsPost(Post $post)
{
return Auth::user()->id === $post->user->id;
}
AuthServiceProvider 的这段代码
protected $policies = [
'App\Post' => 'App\Policies\PostPolicy',
];
希望任何人都可以帮助我。