Оформить заказ vendor/laravel/nova/src/NovaApplicationServiceProvider.php
.У него есть метод, который называется authorization
:
/**
* Configure the Nova authorization services.
*
* @return void
*/
protected function authorization()
{
$this->gate();
Nova::auth(function ($request) {
return app()->environment('local') ||
Gate::check('viewNova', [$request->user()]);
});
}
Если среда была локальной, он позволяет всем получить доступ к панели, но если среда была чем-то другим, он проверяет определение метода viewNova
и он передает ему $request->user()
.
В том же файле есть метод gate()
, который определил viewNova
:
/**
* 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 in_array($user->email, [
//
]);
});
}
По сути, этот метод ничего не делает.Вы можете реализовать это в app/Providers/NovaServiceProvider.php
(это реализация по умолчанию, которую вы видите в файле, и вы упомянули).В вашем случае вы можете реализовать это следующим образом:
/**
* 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) {
Auth::guard('admin')->check();
});
}
Возвращает true
, если аутентифицированный в данный момент пользователь находится в admin
охране.Надеюсь, я смогу ответить на все ваши вопросы.