Aceptar el correo en MAYÚSCULAS y mostrar las cuentas como WOW1, no 17#1
Dos fallos que se juntaban justo en «recuperar nombre de cuenta»: - La validación de Gmail era sensible a mayúsculas (`/@gmail\.com$/` sin la `i`), así que NOVAWOW86@GMAIL.COM se rechazaba con invalidEmail. Y desde que los correos muestran la cuenta en MAYÚSCULAS, quien la copiara de ahí y la pegara no podía recuperar la cuenta, ni registrarse, ni cambiar el correo: la misma regex estaba repetida en register/change-email/recover. Ahora es una sola, con la `i`, en lib/bnet.ts (junto a normalizeEmail). El dominio de un correo NO distingue mayúsculas. - Los correos enseñaban el username interno («17#1»), que no le dice nada a nadie, en vez del nombre visible («WOW1»). Afectaba a DOS plantillas: la de nombres de cuenta y la de la lista de tokens. La conversión existía, pero como helper local de my-account; sube a lib/bnet.ts como `gameAccountDisplayName` (el inverso de `makeGameAccountUsername`) y la aplican las propias plantillas, para que ningún sitio que las use pueda olvidarse. Verificado: la regex acepta las 3 variantes de caja y sigue rechazando no-Gmail; los dos correos renderizados muestran «Cuenta: WOW1 / WOW2». Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import { getTranslations, setRequestLocale } from 'next-intl/server'
|
||||
import { redirect, Link } from '@/i18n/navigation'
|
||||
import { getSession } from '@/lib/session'
|
||||
import { getRealmName, realmSlug } from '@/lib/realm'
|
||||
import { gameAccountDisplayName } from '@/lib/bnet'
|
||||
import { getAccountDashboard, getAccountRank } from '@/lib/account'
|
||||
import { reconcileSumUpCheckouts } from '@/lib/sumup'
|
||||
import { getGameAccounts } from '@/lib/auth'
|
||||
@@ -22,13 +23,6 @@ function maskEmail(e: string): string {
|
||||
return `${visible}***@${domain}`
|
||||
}
|
||||
|
||||
// Nombre visible de la cuenta de juego: «15#1» → «WOW1» (el nº tras # es la
|
||||
// cuenta de juego; con varias serían WOW1, WOW2, WOW3…).
|
||||
function wowAccountName(username: string): string {
|
||||
const i = username.indexOf('#')
|
||||
return i >= 0 ? `WOW${username.slice(i + 1)}` : username
|
||||
}
|
||||
|
||||
const ICONS = '/ns-themes/ns-ryu/ns-images/ns-icons'
|
||||
|
||||
export default async function AccountPage({ params }: { params: Promise<{ locale: string }> }) {
|
||||
@@ -67,7 +61,7 @@ export default async function AccountPage({ params }: { params: Promise<{ locale
|
||||
<GameAccountSwitcher
|
||||
accounts={games}
|
||||
currentId={session.accountId ?? 0}
|
||||
currentLabel={wowAccountName(data.gameAccount)}
|
||||
currentLabel={gameAccountDisplayName(data.gameAccount)}
|
||||
/>
|
||||
</p>
|
||||
<p><i className="fa-solid fa-at account-ficon third-brown"></i> {t('regMail')}: <span>{maskEmail(data.regMail)}</span></p>
|
||||
|
||||
Reference in New Issue
Block a user