Включение определенных ролей для доступа к панели инструментов Laravel Nova?
У меня установлен пакет Spatie Permissions, и я создал политики, чтобы ограничить доступ для моих моделей с использованием этого пакета.
Тем не менее, я немного борюсь за создание шлюза, чтобы позволить определенным ролям, таким как "Администратор" и "Редактор контента", получить доступ к панели инструментов Nova?
Я предполагаю, что это будет включать функцию gate() в NovaServiceProvider. Вот что я попробовал.
protected function gate()
{
Gate::define('viewNova', function ($user) {
if ($user->hasRole('Admin') || $user->hasRole('Content Editor'))
{
return true;
}
});
}
2 ответа
Вы можете достичь того, что вы хотите, как это:
/**
* Register the Nova gate.
*
* This gate determines who can access Nova in non-local environments.
*
* @return void
*/
protected function gate()
{
Gate::define('viewNova', function ($user) {
return $user->hasAnyRole(['Admin', 'Content Editor']);
});
}
Дополнительная информация из документации по авторизации для доступа к Nova: https://nova.laravel.com/docs/1.0/installation.html
Я могу предложить https://novapackages.com/packages/silvanite/novatoolpermissions здесь. Это очень масштабируемое решение, которое я использую и в своем собственном проекте.