Cambio de email con doble confirmación (completa el bloque de auth)
- lib/change-email.ts: requestEmailChange (valida pass/email/token, crea activación con old_email/old_email_hash, email al correo actual), confirmOldEmail (marca is_used, email al nuevo), confirmNewEmail (re-deriva verifier con el nuevo email + actualiza battlenet_accounts y account; borra la activación). - components/ConfirmClient.tsx: cliente genérico que confirma un hash por POST al abrir. - Routes /api/account/change-email, /confirm-old-email, /confirm-new-email. - Páginas /change-email (protegida) y /confirm-old-email, /confirm-new-email (auto). - Catálogos ChangeEmail, ConfirmOldEmail, ConfirmNewEmail. Verificado: change-email protegida (401/redirect), confirmaciones con hash inválido -> invalidLink sin crash. AUTH 100% reimplementado en Next.js. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -206,5 +206,36 @@
|
||||
"wrongCurrentPassword": "The current password is incorrect.",
|
||||
"accountNotFound": "Account not found.",
|
||||
"genericError": "Something went wrong. Please try again later."
|
||||
},
|
||||
"ChangeEmail": {
|
||||
"title": "Change email",
|
||||
"info": "The current email must be entered exactly, respecting case. The new email must be a Gmail address. You need a security token.",
|
||||
"currentPassword": "Current password",
|
||||
"currentEmail": "Current email",
|
||||
"newEmail": "New email",
|
||||
"confEmail": "Confirm new email",
|
||||
"token": "Security token",
|
||||
"submit": "Change email",
|
||||
"sending": "Sending…",
|
||||
"success": "A confirmation email has been sent to your current email.",
|
||||
"missingFields": "Please fill in all fields.",
|
||||
"wrongCurrentEmail": "The current email is not correct.",
|
||||
"invalidEmail": "The new email is not valid.",
|
||||
"invalidToken": "The security token is incorrect.",
|
||||
"wrongCurrentPassword": "The current password is incorrect.",
|
||||
"genericError": "Something went wrong. Please try again later."
|
||||
},
|
||||
"ConfirmOldEmail": {
|
||||
"title": "Confirm email change",
|
||||
"activating": "Confirming…",
|
||||
"success": "Current email confirmed. Check your NEW email to complete the second step.",
|
||||
"error": "The link is invalid or has already been used."
|
||||
},
|
||||
"ConfirmNewEmail": {
|
||||
"title": "Confirm new email",
|
||||
"activating": "Applying the change…",
|
||||
"success": "Email changed successfully! You can now sign in with the new email.",
|
||||
"error": "The link is invalid, expired or the account was not found.",
|
||||
"goLogin": "Go to sign in"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,5 +206,36 @@
|
||||
"wrongCurrentPassword": "La contraseña actual es incorrecta.",
|
||||
"accountNotFound": "No se ha encontrado la cuenta.",
|
||||
"genericError": "Algo ha salido mal. Inténtalo más tarde."
|
||||
},
|
||||
"ChangeEmail": {
|
||||
"title": "Cambiar correo",
|
||||
"info": "El correo actual debe escribirse tal cual, respetando mayúsculas/minúsculas. El nuevo correo debe ser de Gmail. Necesitas un token de seguridad.",
|
||||
"currentPassword": "Contraseña actual",
|
||||
"currentEmail": "Correo actual",
|
||||
"newEmail": "Nuevo correo",
|
||||
"confEmail": "Confirmar nuevo correo",
|
||||
"token": "Token de seguridad",
|
||||
"submit": "Cambiar correo",
|
||||
"sending": "Enviando…",
|
||||
"success": "Se ha enviado un correo de confirmación a tu correo actual.",
|
||||
"missingFields": "Por favor, complete todos los campos.",
|
||||
"wrongCurrentEmail": "El correo actual no es correcto.",
|
||||
"invalidEmail": "El nuevo correo no es válido.",
|
||||
"invalidToken": "El token de seguridad es incorrecto.",
|
||||
"wrongCurrentPassword": "La contraseña actual es incorrecta.",
|
||||
"genericError": "Algo ha salido mal. Inténtalo más tarde."
|
||||
},
|
||||
"ConfirmOldEmail": {
|
||||
"title": "Confirmar cambio de correo",
|
||||
"activating": "Confirmando…",
|
||||
"success": "Correo actual confirmado. Revisa tu NUEVO correo para completar el segundo paso.",
|
||||
"error": "El enlace no es válido o ya se ha usado."
|
||||
},
|
||||
"ConfirmNewEmail": {
|
||||
"title": "Confirmar nuevo correo",
|
||||
"activating": "Aplicando el cambio…",
|
||||
"success": "¡Correo cambiado con éxito! Ya puedes iniciar sesión con el nuevo correo.",
|
||||
"error": "El enlace no es válido, ha caducado o no se ha encontrado la cuenta.",
|
||||
"goLogin": "Ir a iniciar sesión"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user