Перенаправить аутентифицированных и гостевых пользователей в Laravel - PullRequest
0 голосов
/ 11 июля 2020

Я новичок в Laravel, и мое веб-приложение состоит из 3 типов пользователей (охранников): администраторы, агенты, игроки. Аутентификация работает нормально с администраторами и агентами, поскольку они не должны видеть свою панель управления, если они не вошли в систему.

Проблема с игроками, которые могут получить доступ ко всем страницам на веб-сайте как гости и когда они входят в систему, единственное изменение - в панели навигации.

Я получаю следующую ошибку:

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

RouteServiceProvider. php

public const HOME = '/';
public const LOGGEDIN = '/loggedin';
public const AGENT = '/agent';
public const ADMIN = '/admin';

web. php

 
 Route::group(['namespace' => 'Front','middleware' => 'guest:player', 'middleware' => 'auth:player'], function(){

   Route::get('/','FrontController@index')-> name('front.home');
   Route::get('loggedin','FrontController@index')-> name('front.loggedin');
   Route::get('Page1','FrontController@get_page1')-> name('front.page1');
   Route::get('Page2','FrontController@get_page2')-> name('front.page2');
   Route::get('logout','FrontController@logout')-> name('front.logout');
});


Подтвердить. php

protected function redirectTo($request)
    {
        $current_req = request()->segment(count(request()->segments()));
        if($current_req == 'admin'){
            return route('admin.login');
        }
        elseif($current_req == 'agent'){
            return route('agent.login');
        }
        elseif($current_req == ''){
            return route('front.home');
        }
        else{
            return route('front.home');
        }
}}

RedirectIfAuthenticated. php

public function handle($request, Closure $next, $guard = null)
    {
       
        if (Auth::guard($guard)->check()) {
            if($guard == 'agent')
            return redirect(RouteServiceProvider::AGENT);
            elseif($guard == 'admin')
            return redirect(RouteServiceProvider::ADMIN);
            elseif($guard == 'player'){
                return redirect(RouteServiceProvider::LOGGEDIN);
            }
            else
            return redirect(RouteServiceProvider::HOME);
        }
        return $next($request);
    }
...