在 Laravel 中从模型中删除之前如何处理数据?
How to handle data before delete from model in Laravel?
我有以下方法:
public function destroy($id)
{
$id = \JWTAuth::parseToken()->authenticate();
$offer = Offer::findOrFail($id);
$offer->delete();
return response()->json(["offer" => $offer]);
}
删除前如何处理数据?我需要检查用户是否有删除数据的权限
当您使用 authenticate()
方法时,将检索用户模型,因此这意味着您拥有的 id
不是 id,而是 User
。您是否检查过 the documentation of JWT 因为首先您必须检索用户,这就足够了:
$user = \JWTAuth::parseToken()->authenticate();
然后,如果您在 users
table 中有一个字段来判断用户是否有权说 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 的实现方式进行一些搜索,我敢肯定您会在网上找到很多。
我建议使用模特的删除事件:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L1122
和handle它。
这将保证如果您在模型上使用 delete 方法,您将始终检查权限。
我有以下方法:
public function destroy($id)
{
$id = \JWTAuth::parseToken()->authenticate();
$offer = Offer::findOrFail($id);
$offer->delete();
return response()->json(["offer" => $offer]);
}
删除前如何处理数据?我需要检查用户是否有删除数据的权限
当您使用 authenticate()
方法时,将检索用户模型,因此这意味着您拥有的 id
不是 id,而是 User
。您是否检查过 the documentation of JWT 因为首先您必须检索用户,这就足够了:
$user = \JWTAuth::parseToken()->authenticate();
然后,如果您在 users
table 中有一个字段来判断用户是否有权说 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 的实现方式进行一些搜索,我敢肯定您会在网上找到很多。
我建议使用模特的删除事件:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L1122
和handle它。
这将保证如果您在模型上使用 delete 方法,您将始终检查权限。