Вы можете создать новое промежуточное ПО и использовать его в своей группе маршрутов для маршрутов администратора.
Чтобы создать новое промежуточное ПО, используйте команду php artisan
, например, так: (Вы можете назвать новое промежуточное ПО как угодно:
php artisan make:middleware RequireAdminRole
Теперь в вашем новом промежуточном программном обеспечении в функции handle
может быть что-то вроде этого, которое возвращает сообщение об ошибке 403 Forbidden:
public function handle($request, Closure $next)
{
$user = auth()->user();
if (!$user) return $next($request);
if (!$user->hasRole('Admin'))
{
// if your sessions are decoupled from the frontend
// you can even logout the user like so:
// auth()->logout();
abort(403, 'Access denied');
}
return $next($request);
}
Здесь мы используем метод hasRole, но есть и другие, которые вы можете использовать. Для получения дополнительной информации см. Документацию по разрешениям spatie / laravel.
Теперь давайте назначим этому промежуточному программному обеспечению «имя», чтобы мы могли использовать его в наших группах маршрутов для администратора. Внутри файла App\Kernel.php
, в конце концов, внутри массива $routeMiddleware
добавьте его и дайте ему новое, например:
'isadmin' => \App\Http\Middleware\RequireAdminRole::class,
И, наконец, вы можете добавить это промежуточное ПО в группу маршрутов администратора (которая должна быть в файле custom.php
, если вы используете последнюю версию backpack 3.4):
Route::group([
'prefix' => 'admin',
'middleware' => ['web', 'isadmin', config('backpack.base.middleware_key', 'admin')],
'namespace' => 'App\Http\Controllers\Admin',
], function () {
// your routes are here
});
Теперь все ваши запросы к маршрутам администратора должны быть защищены проверкой роли пользователя.
Пожалуйста, дайте нам знать, как все прошло для вас, и если у вас возникли какие-либо проблемы.
С уважением,
~ Cristian