Saltar a contenido

0.2.0 (2026-04-16)

Release enfocado en seguridad: autenticación multi-factor, política de contraseña reforzada, hardening de la plataforma y gestión administrativa de usuarios.

✨ Features

  • Autenticación Multi-Factor (MFA) con soporte para dos métodos simultáneos: email (vía Resend) y aplicación TOTP (Google Authenticator, Authy).
  • Método MFA predeterminado configurable cuando ambos métodos están activos.
  • Opción "Probar otro método" durante la verificación de login para cambiar entre métodos MFA disponibles.
  • Códigos de recuperación de un solo uso (8 códigos en formato XXXXX-XXXXX) como respaldo cuando el método MFA principal no está disponible.
  • Gestión completa de MFA desde la sección de Seguridad del perfil: activar, desactivar, cambiar método predeterminado, regenerar códigos de recuperación.
  • Banner no intrusivo para usuarios sin MFA activo, recomendando su activación tras iniciar sesión.
  • Duración de sesión diferenciada: 2 días sin MFA, 5 días con MFA habilitado.
  • Política de contraseña reforzada: mínimo 12 caracteres, al menos una mayúscula, minúscula, dígito y carácter especial. No puede ser igual al email.
  • Indicador visual de fortaleza de contraseña en tiempo real en formularios de registro, cambio y restablecimiento de contraseña.
  • Panel de administración de usuarios con lista paginada, búsqueda, estado MFA, plan de suscripción y fecha de registro.
  • Opción para que el admin desactive el MFA de cualquier usuario (recuperación de cuentas bloqueadas).
  • Exportación de usuarios a Excel (.xlsx) con datos de MFA, plan y fecha de registro.
  • Emails MFA con soporte multiidioma (español/inglés) según el idioma seleccionado por el usuario.

🔧 Internal

  • Security headers middleware: X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy, Cache-Control, Strict-Transport-Security (producción).
  • Rate limiting en login: máximo 10 intentos por IP por minuto.
  • Account lockout: bloqueo temporal de 15 minutos tras 5 intentos fallidos consecutivos.
  • Nuevo módulo backend mfa/ siguiendo patrón SOLID (interfaces, repositorio, servicios, schemas, rutas).
  • Dependencias agregadas: pyotp, qrcode[pil], openpyxl.

⬆️ Upgrades

  • Política de contraseña actualizada de 8 a 12 caracteres mínimos con requisito de carácter especial.