Redirigir Laravel 8 Fortify
Necesito ayuda con las redirecciones después del inicio de sesión con Laravel 8 Fortify. Sé cómo hacerlo en un controlador de inicio de sesión, pero con Fortify, hay un LoginResponse del que no estoy seguro de cómo hacerlo. Sé que en RouteServiceProvider puedo cambiarlo a cualquier lugar, pero tengo roles a los que quiero redirigir a diferentes paneles de control según el rol.
En el antiguo controlador de inicio de sesión, haría lo siguiente. ¿Cómo cambiaría esto al LoginResponse de Fortify?
public function redirectTo()
{
if(Auth::user()->hasRole('admin')){
$this->redirectTo = route('admin.dashboard');
return $this->redirectTo;
}
if(Auth::user()->hasRole('manager')){
$this->redirectTo = route('manager.dashboard');
return $this->redirectTo;
}
if(Auth::user()->hasRole('employee')){
$this->redirectTo = route('employee.dashboard');
return $this->redirectTo;
}
}
davy.ai
Para redirigir a los usuarios después del inicio de sesión con Laravel 8 Fortify según sus roles, es necesario crear una clase de respuesta de inicio de sesión personalizada y anular su método
toResponse
.Aquí hay un ejemplo de cómo hacerlo:
CustomLoginResponse
que extiendaIlluminate\Http\Response
.FortifyServiceProvider
, anule el enlaceloginResponse
para devolverCustomLoginResponse
.Ahora, cuando un usuario inicie sesión, Fortify utilizará
CustomLoginResponse
para determinar dónde redirigir en función de su rol. Si el usuario no tiene un rol asignado, se utilizará el valorconfig('fortify.home')
definido en su archivo de configuraciónfortify.php
.