Группа маршрутов с несколькими проверками промежуточного программного обеспечения

В моем проекте laravel я создал свои собственные роли и добавил их в промежуточное ПО, чтобы я мог использовать auth.admin или auth.superadmin для защиты определенных маршрутов.

У меня есть Route::Group для моей роли супер-администратора, Route::Group для моей роли администратора и Route: Group для стандартной проверки аутентификации.

Теперь у меня есть определенный маршрут, который должен быть доступен суперадмину и администратору. Когда я помещаю маршрут в группу администраторов ИЛИ в группу superadmin, это работает. Но когда я пытаюсь поместить его в оба или создать группу маршрутов, где я проверяю обе роли, это не так. Затем я попытался создать Route::Group следующим образом:

Route::group(['middleware' => ['auth','auth.admin', 'auth.superadmin']], function() {
        Route::resource('user', 'UserController', ['except' => ['show']]);
});

Я думал, что это решит мою проблему, но это не так.

Как я могу создать группу маршрутов, где только администраторы и суперадмины могут получить доступ к маршруту.

1 ответ

Перепишите ваше промежуточное ПО, чтобы использовать такие настройки:

Route::get('/home', ['middleware' => 'roles:admin,superadmin', function () {
   echo '/home';
}]);

А затем с помощью ... Оператор вы можете легко проверить параметр $roles как массив:

// YourMiddleware.php
public function handle($request, Closure $next, ...$roles)
Другие вопросы по тегам