From fd436455069e63cd8223ffbd8521676690197685 Mon Sep 17 00:00:00 2001 From: Kritik-J Date: Mon, 29 Jul 2024 20:46:50 +0530 Subject: [PATCH] fix: normalize email case to prevent duplicate accounts --- apps/webapp/app/services/emailAuth.server.tsx | 3 ++- apps/webapp/app/services/gitHubAuth.server.ts | 3 ++- apps/webapp/app/utils/email.ts | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 apps/webapp/app/utils/email.ts diff --git a/apps/webapp/app/services/emailAuth.server.tsx b/apps/webapp/app/services/emailAuth.server.tsx index e48d405dd2..ccc804bebd 100644 --- a/apps/webapp/app/services/emailAuth.server.tsx +++ b/apps/webapp/app/services/emailAuth.server.tsx @@ -6,6 +6,7 @@ import { env } from "~/env.server"; import { sendMagicLinkEmail } from "~/services/email.server"; import { postAuthentication } from "./postAuth.server"; import { logger } from "./logger.server"; +import { normalizeEmail } from "~/utils/email"; let secret = env.MAGIC_LINK_SECRET; if (!secret) throw new Error("Missing MAGIC_LINK_SECRET env variable."); @@ -30,7 +31,7 @@ const emailStrategy = new EmailLinkStrategy( try { const { user, isNewUser } = await findOrCreateUser({ - email, + email: normalizeEmail(email), authenticationMethod: "MAGIC_LINK", }); diff --git a/apps/webapp/app/services/gitHubAuth.server.ts b/apps/webapp/app/services/gitHubAuth.server.ts index ff9e736d64..a7895d5f1c 100644 --- a/apps/webapp/app/services/gitHubAuth.server.ts +++ b/apps/webapp/app/services/gitHubAuth.server.ts @@ -5,6 +5,7 @@ import { findOrCreateUser } from "~/models/user.server"; import type { AuthUser } from "./authUser"; import { postAuthentication } from "./postAuth.server"; import { logger } from "./logger.server"; +import { normalizeEmail } from "~/utils/email"; export function addGitHubStrategy( authenticator: Authenticator, @@ -32,7 +33,7 @@ export function addGitHubStrategy( }); const { user, isNewUser } = await findOrCreateUser({ - email: emails[0].value, + email: normalizeEmail(emails[0].value), authenticationMethod: "GITHUB", authenticationProfile: profile, authenticationExtraParams: extraParams, diff --git a/apps/webapp/app/utils/email.ts b/apps/webapp/app/utils/email.ts new file mode 100644 index 0000000000..49250c7568 --- /dev/null +++ b/apps/webapp/app/utils/email.ts @@ -0,0 +1,5 @@ +export const normalizeEmail = (email: string): string => { + const [localPart, domain] = email.split("@"); + const normalizedEmail = `${localPart}@${domain.toLowerCase()}`; + return normalizedEmail; +};