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({