如何在Laravel中从模型中删除之前处理​​数据?

时间:2017-02-14 20:38:25

标签: laravel laravel-5.4

我有以下方法:

public function destroy($id)
    {

        $id = \JWTAuth::parseToken()->authenticate();
        $offer = Offer::findOrFail($id);
        $offer->delete();

        return response()->json(["offer" => $offer]);
    }

如何在删除前处理数据?我需要检查用户是否允许删除数据

2 个答案:

答案 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方法,则始终检查权限。