В web.php
у меня есть две промежуточные группы для двух пользовательских ролей — admins
и non_admins
:
Route::group(['middleware' => ['auth', 'admin']], function () {
// if user is logged in AND has a role of admin...
Route::get('/', 'Admin\IndexController@index');
});
Route::group(['middleware' => ['auth', 'non_admin']], function () {
// if user is logged in AND has a role of non_admin
Route::get('/', 'NonAdmin\IndexController@index');
});
И промежуточное ПО admin
, и non_admin
проверяют, что роль Auth::user()
равна admin
или non_admin
соответственно; если это не так, промежуточное программное обеспечение завершается с ошибкой abort(403)
. Почему у меня нет единого промежуточного ПО? Смысл этого в том, чтобы разделить две роли, чтобы каждая имела свою собственную независимую логику контроллера и свои представления.
Проблема
Если я вхожу в систему как admin
, я получаю 403, если я вхожу как non_admin
, все работает как положено. Мое предположение: Laravel видит два повторяющихся маршрута и разрешает только тот, который определен последним (который находится в ['middleware' => ['auth', 'non_admin']]
).
Вопрос
Как разрешить повторяющиеся маршруты, но разделить логику контроллера и представления? Опять же, admin
и non_admin
пользователей посетят один и тот же маршрут ('/'), но увидят два разных представления. Я также хочу реализовать это в двух разных контроллерах.