Home | Clases | Creación de un CMS en PHP con Laravel | Cambiar contraseña con envío de email

Cambiar contraseña con envío de email


Introducción

Un uso bastante frecuente en los sitios web con opciones de registro y acceso de usuarios es la posibilidad de resetear la contraseña en caso de que el usuario la olvide.

Toda la información de cómo realizar esta configuración en Laravel se encuentra en https://laravel.com/docs/5.8/passwords.

El proceso suele ser el siguiente:

  • El usuario, mediante un botón, solicita la opción de Cambiar Contraseña

  • Este botón le llevará a una vista (password/reset) con un formulario para introducir el email y un botón de submit.

  • Tras ese submit, el usuario recibirá en su email y enlace único (con un token asociado a su email).

  • Al pinchar en dicho enlace, el usuario accederá a un nuevo formulario (password/email) que le permitirá rellenar de nuevo la contraseña y solicitar el cambio.


De todo esto se encargarán los controllers ForgotPasswordController y ResetPasswordController creados en el apartado Auth, si bien para que todo funcione correctamente deberemos modificarlos, así como previamente realizar la configuración de la cuenta de envío de emails.


Configuración de email

Esta configuración la podríamos realizar directamente en nuestro archivo de entorno .env, añadiendo los parámetros de nuestra cuenta de email de la siguiente manera:



NOTA: En el ejemplo anterior para una cuenta de Gmail, es necesario además activar en tu cuenta de Google la opción de envío de emails desde aplicaciones de terceros, para ello, accede a Gestionar tu cuenta de Google > Acceso a aplicaciones poco seguras y activa dicha opción.


Vista para introducir el email (auth/passwords/email.blade.php)

Esta vista es llamada desde ResetPasswordController, utilizando el trait Illuminate\Foundation\Auth\SendsPasswordResetEmails, en concreto su función showLinkRequestForm():



NOTA: Un trait es similar a una clase abstracta, no se puede instanciar como tal pero contiene métodos que se pueden usar en otras clases.




Vista para introducir la nueva contraseña (auth/passwords/reset.blade.php)

Al hacer clic en el enlace recibido, nos debe redirigir a esta página para modificar la contraseña, y al enviar el formulario será el trait Illuminate\Foundation\Auth\ResetsPasswords de ResetPasswordController el encargado de realizar dicha gestión.






Personalización del email

Lo único que nos faltaría por hacer sería personalizar el email de envío. Para ello debemos realizar varias acciones.

Lo primero, tener acceso a la plantilla general de notificación. Usando el comando:



y seleccionando la opción 11 (laravel-notifications) veremos que se no copiará en la carpeta /resources/views/vendor/notifications dicha plantilla para que las podamos modificar (email.blade).



A continuación debemos crear una nueva notificación que sobreescriba la notificación por defecto, para ello, ejecuta el comando:



Eso creará un nuevo archivo en app/Notifications llamado CambiarPassword que inicialmente tendrá el siguiente aspecto:



Modifícalo para extienda la notificación de resetar la password por defecto:




Lo único que faltaría ahora sería decirle al modelo Usuario (que es al que voy a notificar mediante Notifiable) que sobreescriba el método sendPasswordResetNotification para que ahora envíe una notificación de tipo CambiarPassword:



Si ahora realizas la solicitud, el email debería tener un aspecto más familiar:





Ejercicios propuestos

  • Modifica la vista que genera el email de envío para que extienda a un nuevo layout en la ruta views/layout/email.blade.php, añadiéndole algunos estilos personalizados.

  • Crea una página de contacto en el front-end que incluya un formulario (Nombre, email, asunto, acepto política de privacidad) que se rellena y se envía por email al usuario y al administrador de la página.



Fecha de publicación: 24/05/2019
Asignaturas: desarrollo web en entorno servidordespliegue de aplicaciones web
Temas: blog gestor de contenidos laravel php css jquery
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos