使用laravel策略仅显示自己的帖子和管理员的所有帖子
如何使用Laravel策略为管理员和编辑器显示所有产品,但为供应商显示自己的产品 我已在使用laravel策略仅显示自己的帖子和管理员的所有帖子,laravel,laravel-permission,Laravel,Laravel Permission,如何使用Laravel策略为管理员和编辑器显示所有产品,但为供应商显示自己的产品 我已在查看和查看任何 public function viewAny(User $user) { return true; } public function view(User $user, Product $product) { return $user->id === $product->vendor_id; } 在我的刀片模板中,我完成了以下操作: @foreach($all
查看
和查看任何
public function viewAny(User $user)
{
return true;
}
public function view(User $user, Product $product)
{
return $user->id === $product->vendor_id;
}
在我的刀片模板中,我完成了以下操作:
@foreach($allProducts as $productLists)
@can('view', $productLists)
codes....
@endcan
@endforeach
你不能在政策上这么做 策略旨在为您提供True或False,以便当前用户可以访问控制器中的操作 在您的情况下,管理员和普通用户都可以访问控制器的操作,因此策略不是用于此操作的地方 您可以在控制器中执行此操作,例如:
$currentUser = auth()->user();
if ($currentUser->is_admin) {
$values = DB::table('products')->get();
} else {
$values = DB::table('products')->where('owner_id', $currentUser->id)->get();
}
现在,您可以将$value传递给您的视图……为什么不使用策略过滤器 只需将下面的代码放在
ProductPolicy
public function before($user, $ability){
if($user->role == 'admin' || $user->role == 'employee'){
return true;
}
}
您可能想访问以了解更多信息。我正在努力获得laravel的许可。我问了这个问题,有人推荐我从
Gate
和Policy
问这个问题。解决此问题的最佳方法是什么?是的,当您希望限制对某些路由或控制器操作的访问时,建议使用Gate和Policy,因此某些角色之外的用户无法进入,但在您的场景中,所有用户角色都可以访问,但结果不同。请您帮助我解决此问题