Iniciar sesión con correo electrónico o nombre de usuario
Permite a los usuarios iniciar sesión con su nombre de usuario O dirección de correo electrónico desde el mismo campo de entrada en el formulario de inicio de sesión estándar.
login_emailusername
Install
composer require 'drupal/login_emailusername:^3.0'
composer require 'drupal/login_emailusername:^2.1'
Overview
Login Email or Username es un módulo de Drupal simple pero práctico que mejora la experiencia de inicio de sesión del usuario al permitir la autenticación con un nombre de usuario o una dirección de correo electrónico en un único campo de entrada. Esto elimina la necesidad de que los usuarios recuerden qué identificador usaron durante el registro.
El módulo funciona de manera transparente modificando el formulario de inicio de sesión estándar de Drupal, cambiando el campo 'Nombre de usuario' para aceptar tanto nombres de usuario como direcciones de correo electrónico. Cuando se ingresa una dirección de correo electrónico, el módulo busca el nombre de usuario correspondiente y lo utiliza para la autenticación. Las direcciones de correo electrónico tienen prioridad sobre los nombres de usuario cuando ambos podrían coincidir potencialmente.
Además, el módulo extiende los endpoints de autenticación de la REST API, permitiendo que las aplicaciones Drupal headless o desacopladas también se beneficien del inicio de sesión basado en correo electrónico. Tanto el endpoint de inicio de sesión estándar como el endpoint de restablecimiento de contraseña están mejorados para aceptar direcciones de correo electrónico.
Features
- Inicio de sesión con nombre de usuario o dirección de correo electrónico en un único campo de entrada en el formulario de inicio de sesión estándar de Drupal
- Búsqueda automática del nombre de usuario cuando se proporciona una dirección de correo electrónico
- Las direcciones de correo electrónico tienen prioridad sobre los nombres de usuario durante la validación
- Soporte de REST API para autenticación basada en correo electrónico a través del endpoint user.login.http
- Soporte de REST API para restablecimiento de contraseña por correo electrónico o nombre de usuario a través del endpoint user.pass.http
- No requiere configuración: funciona inmediatamente después de la instalación
- Compatible con Drupal 10.3+ y Drupal 11
Use Cases
Sitio estándar con inicio de sesión basado en correo electrónico
Para sitios donde los usuarios son más propensos a recordar su dirección de correo electrónico que su nombre de usuario, este módulo proporciona una experiencia de inicio de sesión fluida. Los usuarios simplemente ingresan su dirección de correo electrónico en el formulario de inicio de sesión y se autentican normalmente sin necesidad de buscar o recordar su nombre de usuario.
Aplicaciones Drupal desacopladas/headless
Al construir una aplicación Drupal headless con un frontend separado (React, Vue, Angular, etc.), este módulo asegura que el endpoint de inicio de sesión de la REST API acepte direcciones de correo electrónico. Las aplicaciones frontend pueden enviar solicitudes de inicio de sesión con direcciones de correo electrónico en lugar de requerir nombres de usuario.
Migración desde otras plataformas
Al migrar usuarios desde plataformas que usan autenticación basada en correo electrónico (como WordPress o aplicaciones personalizadas), este módulo permite a los usuarios continuar iniciando sesión con sus direcciones de correo electrónico mientras Drupal mantiene internamente cuentas basadas en nombres de usuario.
Sitios con nombres de usuario generados automáticamente
Para sitios que generan automáticamente nombres de usuario durante el registro (por ejemplo, a partir de direcciones de correo electrónico o cadenas aleatorias), los usuarios pueden no conocer o recordar su nombre de usuario asignado. Este módulo asegura que siempre puedan iniciar sesión usando su dirección de correo electrónico.
Tips
- El módulo no requiere configuración: funciona inmediatamente después de habilitarlo
- Las direcciones de correo electrónico tienen prioridad sobre los nombres de usuario durante la validación, por lo que si un usuario ingresa texto que coincide tanto con un nombre de usuario como con el correo electrónico de otro usuario, se utilizará la coincidencia por correo electrónico
- Para autenticación por REST API, envía las credenciales como JSON con los campos 'name' (correo electrónico o nombre de usuario) y 'pass'
- El módulo se integra perfectamente con el control de flood y las características de seguridad de Drupal
- El restablecimiento de contraseña a través de REST API también soporta direcciones de correo electrónico en el campo 'name'
Technical Details
Hooks 2
hook_help
Proporciona texto de ayuda para el módulo en la página de ayuda de administración.
hook_form_user_login_form_alter
Altera el formulario de inicio de sesión estándar de Drupal para aceptar direcciones de correo electrónico además de nombres de usuario.
Troubleshooting 3
Limpiar la caché de Drupal usando drush cr o a través de /admin/config/development/performance. Las alteraciones de rutas requieren una reconstrucción de caché para tener efecto.
Asegúrate de enviar la dirección de correo electrónico en el campo 'name' del payload JSON, no en un campo 'email' separado. La API espera el formato estándar: {"name": "user@example.com", "pass": "password"}
Si un nombre de usuario coincide con la dirección de correo electrónico de otro usuario, la búsqueda por correo electrónico tiene prioridad. Esto es por diseño para asegurar un comportamiento consistente, aunque tales situaciones deberían ser raras en sitios correctamente configurados.
Security Notes 4
- El módulo mantiene el control de flood integrado de Drupal para intentos de inicio de sesión, protegiendo contra ataques de fuerza bruta
- Los intentos de inicio de sesión fallidos se registran correctamente independientemente de si se usó nombre de usuario o correo electrónico
- El módulo no expone si una dirección de correo electrónico existe en el sistema: las credenciales inválidas devuelven el mismo mensaje de error
- Todos los flujos de autenticación utilizan los mecanismos de seguridad del core de Drupal sin eludir ninguna verificación de seguridad