Как проверить маршруты, если пользователь является администратором или нет? - PullRequest
0 голосов
/ 08 октября 2019
//This is the middle ware
public function handle($request, Closure $next)
{

        if(auth()->user()->isAdmin())   //isAdmin is a function in the User model which checks if the user is admin or not
        {
            return redirect('/admin');
        } else {
            return redirect('/home');
        }

    return $next($request);
}
//I already registered this middleware in kernel as well as verifyUser

Route::middleware(['auth', 'verifyUser'])->group(function() { 

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/admin', 'AdminController@index')->name('admin');

Route::get('/users/profile', 'UserController@view')->name('users.view-profile');

Route::get('/users/edit_profile', 'UserController@edit')->name('users.edit-profile');
});

Основная проблема здесь в том, что он показывает эту ошибку в браузере. Страница не перенаправляет должным образом

Firefox обнаружил, что сервер перенаправляет запрос на этот адрес так, что никогдазавершено.

Эта проблема иногда может быть вызвана отключением или отказом принимать файлы cookie.

1 Ответ

0 голосов
/ 08 октября 2019

Вы говорите Laravel перенаправить администраторов на /admin, а не-администраторов на /home.

Однако вы сделали /admin и /home субъектом к этому промежуточному программному обеспечению, поэтому, когда пользователь получает /home, он перенаправляет его на /home снова (и снова, и снова, и снова, навсегда).

Скорее всего, вам понадобятся два изменения:

  • Новое промежуточное ПО, примененное только к маршрутам администратора, которое перенаправляет только не-администраторов с этих маршрутов.
  • Поместите логику home / admin как единое целое-отключить шаг после входа в систему вместо каждого просмотра страницы. См. раздел настройки пути документа Аутентификация.
...