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