привет Я хочу использовать авторизацию в моем проекте с gate. Я определяю гейт в провайдере \AuthServiceProvider
:
public function boot()
{
$this->registerPolicies();
foreach ($this->getPermissions() as $permission) {
Gate::define($permission->name , function ($user) use($permission){
return $user->hasRole($permission->roles);
});
}
}
, после чего я определяю функцию hasRole
в App\User
:
public function hasRole($role)
{
if(is_string($role)) {
return $this->roles->contains('name' , $role);
}
return !! $role->intersect($this->roles)->count();
}
например в ProductController
Я определяю индекс такой это:
public function index()
{
$this->authorize('show-product');
$products = Product::latest()->paginate(20);
return view('Admin.product.all' , compact('products'));
}
, но когда я использую @can
в своем блейде для ограничения раздела авторизацией, он не показывает этот раздел пользователю, имеющему доступ к этому разделу.