La autenticación con Laravel Fortify crea toda la infraestructura necesaria para la autenticación: rutas, controladores necesarios para iniciar sesión, registrarse, restablecer contraseña, autenticación de dos factores, verificación de correo electrónico, etc. Toda la parte frontal depende de ti.
En la autenticación básica de Laravel Breeze, pondrías tu lógica para redirigir a la página anterior en el LoginController, pero con la autenticación de Laravel Fortify, no tenemos un LoginController, por lo que no podemos colocar la lógica en ese archivo.
Laravel Fortify utiliza Laravel\Fortify\Contracts\LoginResponse para la autenticación, así que crearemos nuestro propio LoginResponse, que sobrescribirá el LoginResponse de Fortify.
No podemos simplemente redirigir hacia atrás o a la URL anterior, porque la URL anterior es /login, que por defecto redirige a la página /home como se define en RouteServiceProvider.
Tenemos que obtener la URL que es anterior a la página de inicio de sesión, almacenarla en la sesión y luego, después de un inicio de sesión exitoso, redirigir a la URL que almacenamos en la sesión.
Si la sesión no tiene un enlace, entonces pon url()->previous() en el enlace de la sesión.
Fortify::loginView(function() {
if(!session()->has('link')){
session(['link' => url()->previous()]);
}
return view('auth/login');
});
Redirigir al enlace almacenado en la sesión
<?php
namespace App\Http\Responses;
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
class LoginResponse implements LoginResponseContract
{
public function toResponse($request)
{
return redirect(session()->get('link'));
}
}
Truco sencillo que te puede ahorrar tiempo de trabajo y sobre todo aportar comodidad de uso a tus usuarios.
¿Conocías esta configuración de Laravel Fortify?