我有以下方法:
public function destroy($id)
{
$id = \JWTAuth::parseToken()->authenticate();
$offer = Offer::findOrFail($id);
$offer->delete();
return response()->json(["offer" => $offer]);
}
如何在删除前处理数据?我需要检查用户是否允许删除数据
答案 0 :(得分:1)
使用authenticate()
方法时,会检索用户模型,这意味着您拥有的id
不是ID,而是User
。你有没有检查the documentation of JWT因为首先你需要检索用户,这就足够了:
$user = \JWTAuth::parseToken()->authenticate();
然后,如果您的users
表格中有一个字段,告诉用户是否有正确的admin
可以是1或0,那么您可以执行以下操作:
if($user->admin == 1)
{
$offer = Offer::findOrFail(1); //say id
$offer->delete();
return response()->json(["offer" => $offer]);
}
return response()->json(['error' => 'you dont have the right to delete this'], 403);
这个想法只是一点点划痕,但我最好的建议是对JWT的实施方式进行一些搜索,我很确定你会在网上找到大量的。
答案 1 :(得分:0)
我建议使用Model的删除事件:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L1122
和handle它。
这将保证如果您在模型上使用delete方法,则始终检查权限。