MakerBundle añade nuevos comandos para resetear contraseñas y generar mensajes

MakerBundle es un bundle de Symfony que genera automáticamente parte del código que necesitas en tu aplicación (controladores, comandos, formularios, etc.) La versión 1.15 del bundle se acaba de publicar con las siguientes novedades.

Nuevo comando para implementar "Olvidé mi contraseña"

El bundle ya incluía casi todo lo que necesitas para configurar la seguridad de tu aplicación gracias a los comandos make:user, make:auth y make:registration-form. Lo único que faltaba era algo para automatizar una funcionalidad que seguro que has tenido que implementar alguna vez: "Olvidé mi contraseña".

En esta nueva versión del bundle, simplemente tienes que ejecutar el comando make:reset-password y Symfony genera todo el código necesario:

$ php bin/console make:reset-password
 
  # ... aquí respondes a algunas preguntas que te hace el comando ...
 
  created: src/Controller/ResetPasswordController.php
  created: src/Entity/ResetPasswordRequest.php
  created: src/Repository/ResetPasswordRequestRepository.php
  updated: config/packages/reset_password.yaml
  created: src/Form/ResetPasswordRequestFormType.php
  created: src/Form/ChangePasswordFormType.php
  created: templates/reset_password/check_email.html.twig
  created: templates/reset_password/email.html.twig
  created: templates/reset_password/request.html.twig
  created: templates/reset_password/reset.html.twig

Después de contestar a las preguntas que te hace el comando, se genera automáticamente todo el código PHP y Twig necesario para que: 1) los usuarios introduzcan su dirección de email en un formulario; 2) tu aplicación envíe un email para "resetear la contraseña"; 3) los usuarios pinchen en un enlace especial que solo se puede usar una vez; 4) el enlace es validado; 5) los usuarios pueden cambiar su contraseña. Solo tienes que visitar la URL /reset-password para verlo en acción.

Internamente el comando usa el bundle SymfonyCastsPasswordResetBundle para realizar todas las tareas críticas de seguridad. Hemos tenido mucho cuidado para crear el sistema de reseteo de contraseñas más seguro posible. Esto incluye protección frente a "timing attacks", la limitación de las peticiones que se pueden hacer para resetear la contraseña, y la protección del token que se emplea para resetear de manera que no se pueda acceder a el mediante JavaScript.

Esta funcionalidad fue contribuida por Jesse Rushlow y Romaric Drigon en los pull requests #567 y #359.

Nuevo comando para generar mensajes de Messenger

El bundle ahora también incluye un comando para generar mensajes relacionados con el componente Messenger:

$ php bin/console make:message
 
  The name of the message class (e.g. SendEmailMessage):
  > CreateImageThumbnails
 
  Which transport do you want to route your message to? [[no transport]]:
    [0] [no transport]
    [1] async
    [2] async_high_priority
  > 1
 
  created: src/Message/CreateImageThumbnails.php
  created: src/MessageHandler/CreateImageThumbnailsHandler.php
  updated: config/packages/messenger.yaml

Este comando genera una clase vacía para el mensaje, un handler configurado para manejar ese tipo de mensajes y, opcionalmente, actualiza la configuración del archivo messenger.yaml para enrutar el mensaje al transporte adecuado.

Esta funcionalidad fue contribuida por Nicolas Philippe en el pull request #338.

Nuevo comando para generar middleware de Messenger

Otro comando añadido en esta versión es make:messenger-middleware, que permite generar middlewares para el componente Messenger:

$ php bin/console make:messenger-middleware
 
  The name of the middleware class (e.g. CustomMiddleware):
  > MyLoggingMiddleware
 
  created: src/Middleware/MyLoggingMiddleware.php
 
  Next:
   - Add the middleware to your config/packages/messenger.yaml file

Esta funcionalidad fue contribuida por Imad Zairig en el pull request #574.


Fuente: New in MakerBundle 1.15: make:reset-password & make:message

Comentarios

Publicada el

9 de abril de 2020

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.