- lib/mail.ts: transporte SMTP (nodemailer, mismas creds Gmail que Django).
- lib/register.ts: registerAccount (valida, comprueba email existente, crea fila en
home_accountactivation reutilizando la tabla de Django, envía email de activación);
activateAccount (crea battlenet_accounts con SRP6 v2 + account con SRP6 Grunt, como
activate_account_view: expansion=2, battlenet_index=1; borra la activación).
- Route handlers /api/auth/register y /api/auth/activate.
- Páginas app/[locale]/register (RegisterForm cliente) y app/[locale]/activate-account
(ActivateClient auto-POST al abrir el enlace). Textos en messages (Register, Activate).
Validado: validaciones (missingFields/passwordMismatch/invalidEmail/passwordTooLong);
ciclo completo activación->crea bnet+account->login OK con la cuenta creada
(needsSelection=false), password mala->invalidCredentials. Todo en TS, crypto validada.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>