- Introducción
- Consideraciones de la base de datos
- Enrutamiento
- Vistas
- Después de restablecer contraseñas
- Personalización
Introducción
¿Quieres comenzar rápido? Instala el paquete de Composer laravel/ui
y ejecuta php artisan ui vue --auth
en una aplicación de Laravel nueva. Luego de migrar tu base de datos, navega hasta http://your-app.test/register
o cualquier otra URL asignada a tu aplicación. Este simple comando se encargará de maquetar todo tu sistema de autenticación, ¡incluyendo el restablecimiento de contraseñas!.
La mayoría de las aplicaciones web proporcionan una forma para que los usuarios restablezcan sus contraseñas olvidadas. En lugar de forzarte a reimplementar esto en cada aplicación, Laravel proporciona métodos convenientes para enviar recordatorios de contraseñas y realizar restablecimientos de contraseñas.
Antes de usar las características de restablecimiento de contraseñas de Laravel, tu usuario debe usar el trait Illuminate\Notifications\Notifiable
.
Consideraciones de la base de datos
Para comenzar, verifica que tu modelo App\User
implementa el contrato Illuminate\Contracts\Auth\CanResetPassword
. El modelo App\User
incluido con el framework ya implementa esta interfaz y usa el trait Illuminate\Auth\Passwords\CanResetPassword
para incluir los métodos necesarios para implementar la interfaz.
Generando la migración para la tabla de tokens de restablecimiento
Luego, una tabla debe ser creada para almacenar los tokens de restablecimiento de contraseña. La migración para está tabla está incluida con Laravel por defecto y se encuentra en el directorio database/migrations
. Así que, todo lo que necesitas hacer es ejecutar tus migraciones de la base de datos:
php artisan migrate
Enrutamiento
Laravel incluye las clases Auth\ForgotPasswordController
y Auth\ResetPasswordController
que contienen la lógica necesaria para enviar enlaces de restablecimiento de contraseña por correo electrónico y restablecer contraseñas de usuarios. Todas las rutas necesarias para realizar restablecimiento de contraseñas pueden ser generadas usando el paquete de Composer: laravel/ui
:
composer require laravel/ui --dev php artisan ui vue --auth
Vistas
Para generar todas las vistas necesarias para el restablecimiento de contraseñas, puedes usar el paquete de Composer laravel/ui
:
composer require laravel/ui --dev php artisan ui vue --auth
Estas vistas están ubicadas en resources/views/auth/passwords
. Eres libre de personalizarlas según sea necesario para tu aplicación.
Después de restablecer contraseñas
Una vez que has definido las rutas y vistas para restablecer las contraseñas de tus usuarios, puedes acceder a la ruta en tu navegador en /password/reset
. El ForgotPasswordController
incluido con el framework ya incluye la lógica para enviar los correos con el enlace de restablecimiento, mientras que ResetPasswordController
incluye la lógica para restablecer las contraseñas de los usuarios.
Luego de que una contraseña es restablecida, la sesión del usuario será automáticamente iniciada y será redirigido a /home
. Puedes personalizar la ubicación de redirección definiendo una propiedad redirectTo
en ResetPasswordController
:
protected $redirectTo = '/dashboard';
Por defecto, los tokens para restablecer contraseñas expiran luego de una hora. Puedes cambiar esto mediante la opción de restablecimiento de contraseñas expire
en tu archivo config/auth.php
.
Personalización
Personalización de los guards de autenticación
En tu archivo de configuración auth.php
, puedes configurar múltiples «guards», que podrán ser usados para definir el comportamiento de autenticación para múltiples tablas de usuarios. Puedes personalizar el controlador ResetPasswordController
incluido para usar el guard de tu preferencia sobrescribiendo el método guard
en el controlador. Este método debe retornar una instancia guard:
use Illuminate\Support\Facades\Auth; /** * Get the guard to be used during password reset. * * @return \Illuminate\Contracts\Auth\StatefulGuard */ protected function guard() { return Auth::guard('guard-name'); }
Personalización del broker de contraseña
En tu archivo de configuración auth.php
, puedes configurar múltiples «brokers» de contraseñas, que pueden ser usados para restablecer contraseñas en múltiples tablas de usuarios. Puedes personalizar los controladores ForgotPasswordController
y ResetPasswordController
incluidos para usar el broker de tu elección sobrescribiendo el método broker
:
use Illuminate\Support\Facades\Password; /** * Get the broker to be used during password reset. * * @return PasswordBroker */ public function broker() { return Password::broker('name'); }
Personalización del correo de reseteo
Puedes fácilmente modificar la clase de la notificación usada para enviar el enlace de restablecimiento de contraseña al usuario. Para comenzar, sobrescribe el método sendPasswordResetNotification
en tu modelo User
. Dentro de este método, puedes enviar la notificación usando cualquier clase de notificación que selecciones. El $token
de restablecimiento de contraseña es el primer argumento recibido por el método:
/** * Send the password reset notification. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { $this->notify(new ResetPasswordNotification($token)); }
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Hashing - Documentación de Laravel 6 Lección siguiente Consola artisan - Documentación de Laravel 6