From cb42db3de45761191b7a9593a08c3fd538ec010e Mon Sep 17 00:00:00 2001 From: Killian Date: Tue, 15 Aug 2023 15:57:27 +0100 Subject: [PATCH 1/2] Normalize email when inviting memebers and logging in. --- .../src/views/Login/components/InitialStep/InitialStep.tsx | 6 ++++-- .../components/OrgMembersTable/OrgMembersTable.tsx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/src/views/Login/components/InitialStep/InitialStep.tsx b/frontend/src/views/Login/components/InitialStep/InitialStep.tsx index 3f7abcba4..08fc86fd9 100644 --- a/frontend/src/views/Login/components/InitialStep/InitialStep.tsx +++ b/frontend/src/views/Login/components/InitialStep/InitialStep.tsx @@ -45,13 +45,15 @@ export const InitialStep = ({ return; } + const sanitizedEmail = email.toLowerCase(); + setIsLoading(true); if (queryParams && queryParams.get("callback_port")) { const callbackPort = queryParams.get("callback_port") // attemptCliLogin const isCliLoginSuccessful = await attemptCliLogin({ - email, + email: sanitizedEmail, password, }) @@ -78,7 +80,7 @@ export const InitialStep = ({ } } else { const isLoginSuccessful = await attemptLogin({ - email, + email: sanitizedEmail, password, }); if (isLoginSuccessful && isLoginSuccessful.success) { diff --git a/frontend/src/views/Org/MembersPage/components/OrgMembersTable/OrgMembersTable.tsx b/frontend/src/views/Org/MembersPage/components/OrgMembersTable/OrgMembersTable.tsx index 5a0a6fd83..2955f5b51 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgMembersTable/OrgMembersTable.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgMembersTable/OrgMembersTable.tsx @@ -60,7 +60,7 @@ type Props = { }; const addMemberFormSchema = yup.object({ - email: yup.string().email().required().label("Email").trim() + email: yup.string().email().required().label("Email").trim().lowercase() }); type TAddMemberForm = yup.InferType; From 4e1abc6eba5ba71283f02145ac526224b2481023 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Wed, 23 Aug 2023 18:02:18 +0700 Subject: [PATCH 2/2] Add login email lowercasing to backend --- backend/src/routes/v1/auth.ts | 4 ++-- backend/src/routes/v2/auth.ts | 4 ++-- backend/src/routes/v3/auth.ts | 4 ++-- .../src/views/Login/components/InitialStep/InitialStep.tsx | 6 ++---- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/backend/src/routes/v1/auth.ts b/backend/src/routes/v1/auth.ts index b633f82ea..f373567f2 100644 --- a/backend/src/routes/v1/auth.ts +++ b/backend/src/routes/v1/auth.ts @@ -11,7 +11,7 @@ router.post("/token", validateRequest, authController.getNewToken); router.post( // TODO endpoint: deprecate (moved to api/v3/auth/login1) "/login1", authLimiter, - body("email").exists().trim().notEmpty(), + body("email").exists().trim().notEmpty().toLowerCase(), body("clientPublicKey").exists().trim().notEmpty(), validateRequest, authController.login1 @@ -20,7 +20,7 @@ router.post( // TODO endpoint: deprecate (moved to api/v3/auth/login1) router.post( // TODO endpoint: deprecate (moved to api/v3/auth/login2) "/login2", authLimiter, - body("email").exists().trim().notEmpty(), + body("email").exists().trim().notEmpty().toLowerCase(), body("clientProof").exists().trim().notEmpty(), validateRequest, authController.login2 diff --git a/backend/src/routes/v2/auth.ts b/backend/src/routes/v2/auth.ts index bf348c279..e2d45f452 100644 --- a/backend/src/routes/v2/auth.ts +++ b/backend/src/routes/v2/auth.ts @@ -8,7 +8,7 @@ import { authLimiter } from "../../helpers/rateLimiter"; router.post( // TODO: deprecate (moved to api/v3/auth/login1) "/login1", authLimiter, - body("email").isString().trim().notEmpty(), + body("email").isString().trim().notEmpty().toLowerCase(), body("clientPublicKey").isString().trim().notEmpty(), validateRequest, authController.login1 @@ -17,7 +17,7 @@ router.post( // TODO: deprecate (moved to api/v3/auth/login1) router.post( // TODO: deprecate (moved to api/v3/auth/login1) "/login2", authLimiter, - body("email").isString().trim().notEmpty(), + body("email").isString().trim().notEmpty().toLowerCase(), body("clientProof").isString().trim().notEmpty(), validateRequest, authController.login2 diff --git a/backend/src/routes/v3/auth.ts b/backend/src/routes/v3/auth.ts index 12afb5113..ba6f30335 100644 --- a/backend/src/routes/v3/auth.ts +++ b/backend/src/routes/v3/auth.ts @@ -9,7 +9,7 @@ const router = express.Router(); router.post( "/login1", authLimiter, - body("email").isString().trim(), + body("email").isString().trim().toLowerCase(), body("providerAuthToken").isString().trim().optional({nullable: true}), body("clientPublicKey").isString().trim().notEmpty(), validateRequest, @@ -19,7 +19,7 @@ router.post( router.post( "/login2", authLimiter, - body("email").isString().trim(), + body("email").isString().trim().toLowerCase(), body("providerAuthToken").isString().trim().optional({nullable: true}), body("clientProof").isString().trim().notEmpty(), validateRequest, diff --git a/frontend/src/views/Login/components/InitialStep/InitialStep.tsx b/frontend/src/views/Login/components/InitialStep/InitialStep.tsx index 08fc86fd9..7bab7414e 100644 --- a/frontend/src/views/Login/components/InitialStep/InitialStep.tsx +++ b/frontend/src/views/Login/components/InitialStep/InitialStep.tsx @@ -45,15 +45,13 @@ export const InitialStep = ({ return; } - const sanitizedEmail = email.toLowerCase(); - setIsLoading(true); if (queryParams && queryParams.get("callback_port")) { const callbackPort = queryParams.get("callback_port") // attemptCliLogin const isCliLoginSuccessful = await attemptCliLogin({ - email: sanitizedEmail, + email: email.toLowerCase(), password, }) @@ -80,7 +78,7 @@ export const InitialStep = ({ } } else { const isLoginSuccessful = await attemptLogin({ - email: sanitizedEmail, + email: email.toLowerCase(), password, }); if (isLoginSuccessful && isLoginSuccessful.success) {