@ChertyakaNUB

Как в middleware использовать две роли?

Всем привет!

Laravel 8.

Есть роли в проекте и у ролей есть middleware:
...
 public function handle($request, Closure $next, ... $roles)
    {
dd($roles);
...

Применяя в роуте в самом middleware разные роли:
Route::get('/page', [PageController::class, 'index'])->name('page')->middleware('role:admin,manager');

Получаю на странице перехода с помощью проверки(dd($roles);), только одну роль в массиве, последнюю: manager.
5f8c551704ea6353683051.png
Куда пропадает admin, кто может подсказать, что не так с кодом?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
@ChertyakaNUB Автор вопроса
Понял что простых решений нет, есть одни костыли:
1 Метод, использовать несколько параметров:
в роуте:
Route::get('/page', [PageController::class, 'index'])->name('page')->middleware('role:admin,manager');

в middleware:
...
public function handle($request, Closure $next, $role1, $role2)
    {
//Используем уже здесь $role1, $role2
...

2 Метод, использовать один параметр с разделителем:
в роуте:
Route::get('/page', [PageController::class, 'index'])->name('page')->middleware('role:admin|manager');

в middleware:
...
public function handle($request, Closure $next, $role)
    {
if (!is_array($role)) {
			$roles = explode('|', $role);
		}
...

Костыли, не костыли, но решение работает.
Если вдруг вундэркинды найдут более элегантное/правильное решение, пишите!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы