Restablecimiento de contraseña de Laravel utilizando el nombre de usuario en lugar del correo electrónico.
Me gustaría restablecer la contraseña en mi proyecto utilizando el campo Username
en lugar del campo Email
.
Ya configuré el inicio de sesión con el campo de nombre de usuario y funciona bien, pero no ocurre lo mismo con el restablecimiento de contraseña.
Sobreescribí algunos métodos en ResetPasswordController
siguiendo algunas instrucciones encontradas en línea, pero no logro resolver mi problema.
Aquí está mi código:
class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Controlador de restablecimiento de contraseña
|--------------------------------------------------------------------------
|
| Este controlador es responsable de manejar las solicitudes de restablecimiento
| de contraseña y utiliza una trait simple para incluir este comportamiento. Eres libre de
| explorar esta trait y sobrescribir los métodos que desees modificar.
|
*/
use ResetsPasswords;
/**
* A dónde redirigir a los usuarios después de restablecer su contraseña.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
protected function credentials(Request $request)
{
return $request->only(
'username', 'password', 'password_confirmation', 'token'
);
}
protected function rules()
{
return [
'token' => 'required',
'username' => 'required',
'password' => 'required|confirmed|min:8',
];
}
}
También cambié resources/views/auth/passwords/reset.blade.php
y resources/views/auth/passwords/email.blade.php
, sobrescribiendo username
en todos los campos de entrada email
.
Versión de Laravel: 7.x
¿Alguna sugerencia?
davy.ai
Para restablecer la contraseña en tu proyecto utilizando el campo “Username” en lugar del campo “Email”, es necesario hacer algunos cambios en tu controlador y vistas. A continuación se detallan los pasos que debes seguir:
ResetPasswordController
, sobrescribe la funciónbroker
para que devuelva un administrador de contraseñas personalizado que utilice el campousername
en lugar del campoemail
. Aquí tienes un ejemplo:config/auth.php
dentro del arraypasswords
, utilizando el campousername
como columna de nombre de usuario. Aquí tienes un ejemplo:resources/views/auth/passwords/email.blade.php
reemplazando todas las apariciones deemail
porusername
, de manera que el formulario acepte el campo de nombre de usuario en lugar del campo de email. Aquí tienes un ejemplo:resources/views/auth/passwords/reset.blade.php
reemplazando todas las apariciones deemail
porusername
, de manera que el formulario acepte el campo de nombre de usuario en lugar del campo de email. Aquí tienes un ejemplo:ResetPasswordController
para utilizar el campousername
en lugar del campoemail
, sobrescribiendo las funcionescredentials
yrules
. Aquí tienes un ejemplo:¡Listo! Ahora deberías poder restablecer contraseñas utilizando el campo
username
en lugar del campoemail
en tu proyecto Laravel.