Laravel 6 Ошибка: страница не перенаправляет на указанный маршрут - PullRequest
0 голосов
/ 11 февраля 2020

Я застрял здесь на некоторое время. Я надеюсь, что могу четко объяснить проблему. Я пытаюсь иметь отдельные страницы для администратора и пользователя. Для этого я создал промежуточное программное обеспечение администратора. Теперь, когда я захожу на сайт, он перенаправляет меня на ту же страницу, либо на администратора, либо на пользователя. Я хочу, чтобы он был go для панели администратора, когда администратор входит в систему, и для пользователя дома, когда пользователь входит. Я надеюсь, что проблема ясна. Вот код AdminMiddleware :

public function handle($request, Closure $next)
    {
      if(Auth::user()->user_type == 'admin') //If usertype is admin
    {
       return $next($request);
    }
    else {
        return redirect('home');
    }
    }

Вот код маршрутов :

    Route::get('/','HomeController@index');
//For Admin
Route::group(['middleware' => ['auth','admin']], function() {

Route::get('/admin','HomeController@home_page');
Route::get('/users-list', 'UserController@users_list');

});

Вот код HomeController код:

public function index()
    {
return view('home', compact('currantWorkspace'));
}

Я добавил путь Middleware к ядру. php файл.

Я буду рад предоставить любые другие детали если нужно. Любые решения / предложения будут высоко оценены.

Редактировать

Я пробовал это, но все еще проблема.

    protected function redirectTo(){
  if (Auth::user()->user_type != 'admin') {
    return 'admin';
    //return redirect('/admin');
  }
  else {
    return 'home';
    //return redirect('/');
  }

}

Я думаю, что redirectTo функция не работает или не проверяет условия if / else

Ответы [ 3 ]

0 голосов
/ 11 февраля 2020

Почему бы вам не создать оператор 'if, else' в функции входа в систему, например:

if(Auth::user()->user_type == "Admin"){
    return Redirect::route('dashboard'); 
}else if(Auth::user()->user_type == "Standard User"){
    return Redirect::route('home');
}
0 голосов
/ 11 февраля 2020

Есть несколько проблем, в настоящее время, ключевым моментом является то, что определенное вами промежуточное программное обеспечение не вызывается, когда кто-либо пытается войти в систему.

Чтобы заставить его работать, я думаю, вам просто нужно добавить это в your LoginController.php

    protected function authenticated()
    {
        if (Auth::user()->user_type == 'admin') {
            return redirect('dashboard');
        }

        return redirect('home');
    }

Этот метод в основном сообщает laravel, что вы хотите сделать после того, как пользователь вошел в систему.

0 голосов
/ 11 февраля 2020

Измените маршрут следующим образом.

Route::get('/','HomeController@index')->name('home');
Route::group(['middleware' => ['auth','admin']], function() 
{
Route::get('/admin','HomeController@home_page')->name('admin.home');
Route::get('/users-list', 'UserController@users_list');
});

Измените оператор перенаправления в промежуточном программном обеспечении как

public function handle($request, Closure $next)
{
if(Auth::user()->user_type == 'admin') //If usertype is admin
{
   return $next($request);
}
else 
{
   return redirect()->route('home');
   OR
   return redirect('/');
}
}
...