Вы можете создать новое промежуточное ПО и использовать его в своей группе маршрутов для маршрутов администратора.
Чтобы создать новое промежуточное ПО, используйте команду 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-permissions.
Теперь давайте назначим этому промежуточному программному обеспечению «имя», чтобы мы могли использовать его в наших группах маршрутов для администратора. Внутри файла 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
});
Теперь все ваши запросы к админским маршрутам должны быть защищены проверкой роли пользователя.
Сообщите нам, как все прошло для вас, и если вы столкнулись с какими-либо проблемами.
С наилучшими пожеланиями,
~ Кристиан
person
cristianuibar
schedule
15.05.2018