From 1a981b9bf5b7f82d74e4901c82ba2638f13f42f7 Mon Sep 17 00:00:00 2001 From: Yang Gao <6821729+criyle@users.noreply.github.com> Date: Sat, 18 May 2024 21:04:59 +0800 Subject: [PATCH] core: user: update email normalization (#812) --- packages/hydrooj/src/model/user.ts | 3 ++- packages/migrate/scripts/universaloj.ts | 10 +++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/hydrooj/src/model/user.ts b/packages/hydrooj/src/model/user.ts index ce373a4fa..e95b512ee 100644 --- a/packages/hydrooj/src/model/user.ts +++ b/packages/hydrooj/src/model/user.ts @@ -177,7 +177,8 @@ export class User { function handleMailLower(mail: string) { const [n, d] = mail.trim().toLowerCase().split('@'); - return `${n.replace(/\./g, '').replace(/\+.$/, '')}@${d === 'googlemail.com' ? 'gmail.com' : d}`; + const [name] = n.split('+'); + return `${name.replace(/\./g, '')}@${d === 'googlemail.com' ? 'gmail.com' : d}`; } async function initAndCache(udoc: Udoc, dudoc, scope: bigint = PERM.PERM_ALL) { diff --git a/packages/migrate/scripts/universaloj.ts b/packages/migrate/scripts/universaloj.ts index 128afa45e..547ef996c 100644 --- a/packages/migrate/scripts/universaloj.ts +++ b/packages/migrate/scripts/universaloj.ts @@ -36,13 +36,9 @@ const langMap = { Python3: 'py.py3', }; function handleMailLower(mail: string) { - let data = mail.trim().toLowerCase(); - if (data.endsWith('@googlemail.com')) data = data.replace('@googlemail.com', '@gmail.com'); - if (data.endsWith('@gmail.com')) { - const [prev] = data.split('@'); - data = `${prev.replace(/[.+]/g, '')}@gmail.com`; - } - return data; + const [n, d] = mail.trim().toLowerCase().split('@'); + const [name] = n.split('+'); + return `${name.replace(/\./g, '')}@${d === 'googlemail.com' ? 'gmail.com' : d}`; } export async function run({