9 de mayo de 2024

Redirige a la página anterior después de iniciar sesión con Laravel Fortify

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.

FortifyServiceProvider.php

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');
});

App\Http\Responses\LoginResponse.php

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?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Quieres que trabajemos juntos?
¿HABLAMOS DE TU IDEA?
Todos los derechos reservados.

VAYESA
× ¿Puedo ayudarte?
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram