Los correos de cambio de correo saludan con la cuenta, no con «15#1»
Decían «Hola 15#1»: el username interno, que no le dice nada a nadie. Ahora «Hola INNA@INNA.CL (WOW1)» — el correo, que es la cuenta con Battle.net, y la cuenta de juego con su nombre visible. Si no se sabe cuál es, va el correo solo, sin paréntesis vacío. Afecta a las 3 plantillas del cambio de correo. En la que va al correo NUEVO se saluda con `old_email`: el cambio aún no ha terminado, así que la cuenta se sigue identificando con el correo viejo (hay que añadirlo al SELECT). El original de Django también decía «Hola {{ username }}», así que esto es un arreglo, no una copia. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,14 +43,16 @@ export async function requestEmailChange(
|
||||
await sendMail(
|
||||
current,
|
||||
`Confirma el cambio de correo - NightSpire`,
|
||||
confirmOldEmailHtml(session.username ?? current, newEmail, link),
|
||||
confirmOldEmailHtml(current, session.username ?? null, newEmail, link),
|
||||
)
|
||||
return { success: true }
|
||||
}
|
||||
|
||||
export async function confirmOldEmail(hash: string): Promise<Result> {
|
||||
// `old_email` es el correo con el que la cuenta se identifica AHORA: el cambio
|
||||
// aún no ha terminado, así que es con ese con el que hay que saludar.
|
||||
const [rows] = await db(DB.default).query<RowDataPacket[]>(
|
||||
'SELECT id, email, hash, username FROM accountactivation WHERE old_email_hash = ? AND is_used = 0',
|
||||
'SELECT id, email, old_email, hash, username FROM accountactivation WHERE old_email_hash = ? AND is_used = 0',
|
||||
[hash],
|
||||
)
|
||||
const act = rows[0]
|
||||
@@ -62,7 +64,7 @@ export async function confirmOldEmail(hash: string): Promise<Result> {
|
||||
await sendMail(
|
||||
act.email,
|
||||
`Confirma tu nuevo correo - NightSpire`,
|
||||
confirmNewEmailHtml(act.username ?? act.email, link),
|
||||
confirmNewEmailHtml(act.old_email || act.email, act.username ?? null, link),
|
||||
)
|
||||
return { success: true }
|
||||
}
|
||||
|
||||
+33
-6
@@ -291,10 +291,27 @@ export function accountNamesEmailHtml(email: string, accounts: string[], locale
|
||||
}
|
||||
|
||||
/** `confirm_old_email.html` — se confirma desde el correo ACTUAL. */
|
||||
export function confirmOldEmailHtml(username: string, newEmail: string, link: string, locale = 'es'): string {
|
||||
/**
|
||||
* Cómo se saluda a alguien: «INNA@INNA.CL (WOW1)». Antes se saludaba con el
|
||||
* username interno («Hola 15#1»), que no le dice nada a nadie: la cuenta es el
|
||||
* correo, y el «15#1» solo tiene sentido como WOW1. Si no se sabe la cuenta de
|
||||
* juego, va el correo a secas.
|
||||
*/
|
||||
function saludo(email: string, gameAccount?: string | null): string {
|
||||
const wow = gameAccount ? gameAccountDisplayName(gameAccount) : ''
|
||||
return wow ? `${esc(email)} (${esc(wow)})` : esc(email)
|
||||
}
|
||||
|
||||
export function confirmOldEmailHtml(
|
||||
email: string,
|
||||
gameAccount: string | null,
|
||||
newEmail: string,
|
||||
link: string,
|
||||
locale = 'es',
|
||||
): string {
|
||||
return layout('CAMBIO DE CORREO', 'Confirmación de Cambio de Correo', [
|
||||
p(
|
||||
`Hola ${esc(username)}, has solicitado cambiar tu correo en ${SERVER_NAME} a ${esc(newEmail)}.<br>Para confirmar el cambio, pulsa el botón.`,
|
||||
`Hola ${saludo(email, gameAccount)}, has solicitado cambiar tu correo en ${SERVER_NAME} a ${esc(newEmail)}.<br>Para confirmar el cambio, pulsa el botón.`,
|
||||
),
|
||||
button(link, 'CONFIRMAR CAMBIO'),
|
||||
fallbackLink(link),
|
||||
@@ -304,10 +321,15 @@ export function confirmOldEmailHtml(username: string, newEmail: string, link: st
|
||||
}
|
||||
|
||||
/** `confirm_new_email.html` — se confirma desde el correo NUEVO. */
|
||||
export function confirmNewEmailHtml(username: string, link: string, locale = 'es'): string {
|
||||
export function confirmNewEmailHtml(
|
||||
email: string,
|
||||
gameAccount: string | null,
|
||||
link: string,
|
||||
locale = 'es',
|
||||
): string {
|
||||
return layout('NUEVO CORREO', 'Activación de Nuevo Correo', [
|
||||
p(
|
||||
`Hola ${esc(username)}, tu solicitud para cambiar el correo en ${SERVER_NAME} ha sido recibida.<br>Pulsa el botón para confirmar este correo como el nuevo de tu cuenta.`,
|
||||
`Hola ${saludo(email, gameAccount)}, tu solicitud para cambiar el correo en ${SERVER_NAME} ha sido recibida.<br>Pulsa el botón para confirmar este correo como el nuevo de tu cuenta.`,
|
||||
),
|
||||
button(link, 'ACTIVAR NUEVO CORREO'),
|
||||
fallbackLink(link),
|
||||
@@ -317,10 +339,15 @@ export function confirmNewEmailHtml(username: string, link: string, locale = 'es
|
||||
}
|
||||
|
||||
/** `old_email_notification.html` — aviso al correo antiguo, ya sin enlaces. */
|
||||
export function oldEmailNotificationHtml(username: string, newEmail: string, locale = 'es'): string {
|
||||
export function oldEmailNotificationHtml(
|
||||
email: string,
|
||||
gameAccount: string | null,
|
||||
newEmail: string,
|
||||
locale = 'es',
|
||||
): string {
|
||||
return layout('CAMBIO DE CORREO', 'Cambio de Correo Realizado', [
|
||||
p(
|
||||
`Hola ${esc(username)}, te avisamos de que el correo de tu cuenta en ${SERVER_NAME} se ha cambiado correctamente al siguiente:`,
|
||||
`Hola ${saludo(email, gameAccount)}, te avisamos de que el correo de tu cuenta en ${SERVER_NAME} se ha cambiado correctamente al siguiente:`,
|
||||
),
|
||||
pData(`Nuevo correo: ${esc(newEmail)}<br><br>`),
|
||||
divider(),
|
||||
|
||||
Reference in New Issue
Block a user