Перенаправление после входа в систему для нескольких ролей в Laravel - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь перенаправить на определенные страницы после входа в систему.У меня есть этот код в моем файле LoginController, внутри класса LoginController

public function authenticated($request , $user){
    if($user->rol=='Administrador'){
        return redirect()->route('home') ;
    }elseif($user->rol=='Docente'){
        return redirect()->route('balance') ;
    }else {
        return redirect()->route('profile');
    }

}

Также я поместил маршрут в мой файл web.php

Проблема возникает, когда я пытаюсьпосмотрите, работает ли эта функция, потому что когда я представляю пользователя alumno, он должен перенаправить на профиль , но это не

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

В LoginController.php файле (который генерируется при run php artisan make:auth) есть свойство, которое его обрабатывает.

protected $redirectTo = '/home';

Удалите это свойство и добавьте метод с таким же именем.

public function redirectTo(){
    // Code here
}

Метод redirectTo будет иметь приоритет над свойством redirectTo.Это позволяет нам определять логику для обработки пользователей с разными ролями на разных путях.

public function redirectTo(){

    // User role
    $role = Auth::user()->role->name; 

    // Check user role
    switch ($role) {
        case 'Manager':
                return '/dashboard';
            break;
        case 'Employee':
                return '/projects';
            break; 
        default:
                return '/login'; 
            break;
    }
}

Источник: Узнайте, как перенаправить прошедших проверку пользователей на соответствующий путь в Laravel

0 голосов
/ 11 декабря 2018

Попробуйте использовать switch оператор

public function authenticated($request , $user){
  switch ($user->rol){
    case 'Administrador':
      return redirect()->route('home') ;
    case 'Docente':
      return redirect()->route('balance') ;
    default:
      return redirect()->route('profile') ;
  }
}
...