es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy confundido/a al implementar la funcionalidad de olvido de contraseña en Fortify.

Con fortify en Laravel 8 quiero hacer funcionalidad para olvidar contraseña y en app/Providers/FortifyServiceProvider.php escribí:

Fortify::requestPasswordResetLinkView(function () {
    return view('auth.forgot-password');
});

Fortify::resetPasswordView(function ($request) {
    return view('auth.reset-password', ['request' => $request]);
});

Llené la plantilla auth.forgot-password con el diseño que uso para ingresar 1 correo electrónico y recibí un correo electrónico con el siguiente contenido:

Estás recibiendo este correo electrónico porque hemos recibido una solicitud de restablecimiento de contraseña para tu cuenta.

Restablecer contraseña: Este enlace de restablecimiento de contraseña caducará en 60 minutos.

Si no solicito un restablecimiento de contraseña, no es necesario realizar ninguna acción adicional….

1) Quiero reemplazar el contenido de este correo electrónico, pero no logré encontrarlo, ¿cómo puedo reemplazarlo con mi plantilla?

2) ¿El valor “60 minutos” es configurable? ¿Cómo puedo hacerlo?

3) Al abrir el enlace en el correo electrónico anterior, veo un formulario con 3 campos: Correo electrónico, Contraseña, Confirmar contraseña. Esa es la plantilla auth.reset-password y puedo modificarla. Pero no comprendo para qué son los campos contraseña y confirmar contraseña. Parece que quiero modificar la contraseña del usuario dentro del perfil del usuario. Estoy muy confundido acerca de para qué sirve esta funcionalidad. ¿Cómo puedo implementar la funcionalidad de olvidar contraseña en fortify?

Tengo config/fortify.php :

'features' => [
    Features::registration(),
    Features::resetPasswords(),
    // Features::emailVerification(),
    Features::updateProfileInformation(),
    Features::updatePasswords(),
    Features::twoFactorAuthentication([
        'confirmPassword' => true,
    ]),
],

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Respuestas

    1. Para reemplazar el contenido del correo electrónico de restablecimiento de contraseña, debes modificar el método resetPassword en la clase app/Notifications/ResetPassword.php. Aquí es donde se construye el mensaje de correo electrónico. Puedes modificar el contenido del mensaje e incluso usar una vista personalizada para el correo electrónico. Aquí tienes un ejemplo:
      public function toMail($notifiable)
      {
         return (new MailMessage)
             ->subject('Notificación de Restablecimiento de Contraseña')
             ->view('emails.password.reset', ['url' => $this->url]);
      }
      

      En este ejemplo, estamos utilizando una vista personalizada emails.password.reset para mostrar el mensaje de correo electrónico. Puedes crear esta vista en resources/views/emails/password/reset.blade.php y utilizar el motor de plantillas de Laravel para definir el contenido del mensaje.

      Estás recibiendo este correo electrónico porque hemos recibido una solicitud de restablecimiento de contraseña para tu cuenta.
      Haz clic en el botón de abajo para restablecer tu contraseña.
      <a href="{{ $url }}" class="btn">Restablecer Contraseña</a>
      
    2. Sí, el valor “60 minutos” es configurable. Puedes modificar este valor en config/fortify.php. Busca la clave password_timeout dentro del array passwords. Aquí tienes un ejemplo:
      'passwords' => [
         'users' => [
             'provider' => 'users',
             'table' => 'password_resets',
             'expire' => 60, // <-- Cambia este valor para ajustar el tiempo de vencimiento del enlace de restablecimiento de contraseña
         ],
      ],
      
    3. Los campos de Contraseña y Confirmar Contraseña en el formulario auth.reset-password se utilizan para actualizar la contraseña del usuario. Cuando un usuario hace clic en el enlace de restablecimiento de contraseña en el correo electrónico, se les redirige a este formulario donde pueden ingresar una nueva contraseña para su cuenta. Este es el comportamiento estándar para la funcionalidad de restablecimiento de contraseña en Laravel. No es necesario modificar este formulario a menos que desees cambiar la interfaz de usuario o agregar funcionalidad adicional.

Comments are closed.