Alterar las rutas del sistema de login de Laravel

  • Por
  • PHP
Cómo cambiar las rutas en Laravel generadas para el sistema de autenticación, de modo que podamos personalizar las URL de login, registro, etc.

En un artículo anterior del Manual de Laravel vimos la facilidad con la que se genera todo un completo sistema de autenticación de usuarios, desde la parte de registro y login de usuario, hasta la parte de verificación del email, que está ya incluida desde versiones más modernas del framework.

Además aprendimos que se puede personalizar el sistema de usuarios, de modo que podamos, por ejemplo, generar nuevos campos en el formulario de registro. Todo lo encuentras en el artículo de Instalar el sistema de autenticación de Laravel.

Ahora nos vamos a dedicar a modificar las rutas del sistema de usuarios de Laravel, de modo que puedas personalizar completamente las URL que desees usar en tu sitio web.

Rutas de autenticación generadas

Las rutas de autenticación se generan mediante un archivo instalado durante la generación del sistema de autenticación. Recuerda que este sistema lo habíamos habilitado mediante el comando "php artisan make:auth".

Nota: es una buena práctica hacer un commit justo antes de generar el sistema de autenticación, de modo que podamos tener claros cuáles son los archivos que se generan al hacer este paso y podamos verificar el conjunto de cambios realizado en el proyecto. Más información de esta operativa la encuentras en el Manual de Git.

Las rutas de nuestra aplicación se encuentran en el archivo: routes/web.php

Allí se han generado dos nuevas líneas:

Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

La primera línea corresponde con todas las rutas del sistema de autenticación, que están separadas en un método aparte, estático, que depende de la clase Auth. Luego veremos dónde está ese código.

Además se genera una ruta de "home", que podrías configurar fácilmente a cualquier cosa que te apetezca, sin que se rompa nada, siempre que usemos el nombre de la ruta en vez de su URL ;)

Nota: recuerda que las rutas pueden tener nombres, como en el caso de la ruta anterior definida en "/home". Gracias a que se le da un nombre, puedes usarlo para crear rutas a este punto, sin referirte a la URL física. Esto permite una gran flexibilidad, consiguiendo que los enlaces no se rompan, aunque se cambie la ruta física de las páginas.

Podemos enlazar con una ruta con nombre desde una vista con el helper route().

<a href="{{ route('home') }}">Enlace a la ruta con nombre 'home'</a>

Listado de rutas

Otra operación útil en este punto es consultar el listado de rutas creadas en la aplicación. Esto lo conseguimos con el siguiente comando de artisan.

php artisan route:list

Te ofrece una salida como la de la imagen siguiente.

Ahora vemos que hay muchas rutas nuevas generadas, que son todas las que se indican por medio del método Auth::routes().

Modificar las rutas predeterminadas

Todas las rutas creadas con el sistema de autenticación de Laravel se pueden modificar, para adaptarlas a nuestras necesidades. Quizás por ejemplo queremos cambiar el idioma en el que están las URL.

Si quieres modificar cualquiera de las rutas que se han generado con Auth::routes() tienes que hacer algo como lo siguiente.

Copiar todas las rutas en tu archivo particular de rutas

Tenemos que ir a la definición de las rutas, que es algo que está en la carpeta de "vendor". En concreto en "vendor/laravel/framework/src/Illuminate/Routing/Router.php". Allí veremos todas las rutas en el método auth(), que empieza con este código.

public function auth(array $options = [])
    {
        // Authentication Routes...

Simplemente podrías copiar todo el código de ese método e irte al archivo de rutas principal de tu aplicacion "routes/web.php" y sustituir la llamada al método Auth::routes(); por todo el código de las rutas. Luego podrías modificar cualquiera de ellas perfectamente.

Además tendrás que adaptar el código copiado, porque por ejemplo $this no tiene sentido en el archivo de rutas web.php, sino que tendrás que llamar al método con su versión estática dependiendo de la clase Route.

Por ejemplo, en vez de:

$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');

Tendrás que poner

Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');

Crear un prefijo para todas tus rutas

Recuerda que otra opción interesante, que no requiere de los pasos anteriores, es crear un grupo de rutas. De ese modo podemos personalizar todas las rutas de autenticación, de una única vez.

Route::prefix('usuarios')->group(function() {
  Auth::routes();
});

Conclusión

Hemos aprendido a modificar las rutas de una aplicación Laravel, para todo lo que tiene que ver con las URL generadas para el sistema de autenticación. Ahora podemos personalizar un poco más nuestra aplicación web.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir