Adapta el portal a 3.4.3 (cuentas Battle.net + selector de cuenta de juego)
- home/bnet.py: SRP6 v2 (PBKDF2-HMAC-SHA512) para battlenet_accounts y SRP6 Grunt (SHA1) para las cuentas de juego, con helpers bnet<->game account - login por email contra battlenet_accounts; selector de cuenta de juego cuando la cuenta bnet tiene varias (my_account redirige al selector) - registro/activación crean battlenet_accounts + account enlazada (<bnetId>#1, battlenet_account/battlenet_index) - cambio de contraseña sobre battlenet_accounts; cambio de email recalcula salt/verifier (el usuario SRP depende del email) - AccountActivation: identidad por email (username/salt/verifier opcionales) + migración - plantillas login/register por email + nueva plantilla del selector - docs/MIGRACION_3.4.3.md con el detalle y los pasos de verificación Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+8
-3
@@ -194,12 +194,17 @@ from django.db import models
|
||||
from django.utils import timezone
|
||||
|
||||
class AccountActivation(models.Model):
|
||||
username = models.CharField(max_length=17)
|
||||
# En 3.4.3 (Battle.net) la identidad es el email; el username de la cuenta
|
||||
# de juego se genera al activar (<bnetId>#1), por eso es opcional aquí.
|
||||
username = models.CharField(max_length=17, null=True, blank=True)
|
||||
email = models.EmailField()
|
||||
old_email = models.EmailField(null=True, blank=True)
|
||||
password = models.CharField(max_length=64)
|
||||
salt = models.BinaryField(max_length=32)
|
||||
verifier = models.BinaryField(max_length=32)
|
||||
# salt/verifier ya no se precalculan en el registro (se calculan al activar,
|
||||
# tanto el de bnet como el de la cuenta de juego). Se conservan opcionales
|
||||
# por compatibilidad con el flujo de cambio de email.
|
||||
salt = models.BinaryField(max_length=32, null=True, blank=True)
|
||||
verifier = models.BinaryField(max_length=256, null=True, blank=True)
|
||||
recruiter_id = models.IntegerField(null=True, blank=True)
|
||||
hash = models.CharField(max_length=32, unique=True)
|
||||
old_email_hash = models.CharField(max_length=32, null=True, blank=True)
|
||||
|
||||
Reference in New Issue
Block a user