diff --git a/backend/src/ee/routes/v1/saml-router.ts b/backend/src/ee/routes/v1/saml-router.ts index 8648ade7c..c8395d608 100644 --- a/backend/src/ee/routes/v1/saml-router.ts +++ b/backend/src/ee/routes/v1/saml-router.ts @@ -145,7 +145,7 @@ export const registerSamlRouter = async (server: FastifyZodProvider) => { const { isUserCompleted, providerAuthToken } = await server.services.saml.samlLogin({ externalId: profile.nameID, - email, + email: email.toLowerCase(), firstName, lastName: lastName as string, relayState: (req.body as { RelayState?: string }).RelayState, diff --git a/backend/src/ee/services/oidc/oidc-config-service.ts b/backend/src/ee/services/oidc/oidc-config-service.ts index 15932cb48..3a2d7c6cb 100644 --- a/backend/src/ee/services/oidc/oidc-config-service.ts +++ b/backend/src/ee/services/oidc/oidc-config-service.ts @@ -181,7 +181,6 @@ export const oidcConfigServiceFactory = ({ manageGroupMemberships }: TOidcLoginDTO) => { const serverCfg = await getServerCfg(); - const sanitizedEmail = email.trim().toLowerCase(); if (serverCfg.enabledLoginMethods && !serverCfg.enabledLoginMethods.includes(LoginMethod.OIDC)) { throw new ForbiddenRequestError({ @@ -216,7 +215,7 @@ export const oidcConfigServiceFactory = ({ await orgMembershipDAL.create( { userId: userAlias.userId, - inviteEmail: sanitizedEmail, + inviteEmail: email, orgId, role, roleId, @@ -246,7 +245,7 @@ export const oidcConfigServiceFactory = ({ // we prioritize getting the most complete user to create the new alias under newUser = await userDAL.findOne( { - email: sanitizedEmail, + email, isEmailVerified: true }, tx @@ -256,7 +255,7 @@ export const oidcConfigServiceFactory = ({ // this fetches user entries created via invites newUser = await userDAL.findOne( { - username: sanitizedEmail + username: email }, tx ); @@ -274,10 +273,10 @@ export const oidcConfigServiceFactory = ({ const uniqueUsername = await normalizeUsername(externalId, userDAL); newUser = await userDAL.create( { - email: sanitizedEmail, + email, firstName, isEmailVerified: serverCfg.trustOidcEmails, - username: serverCfg.trustOidcEmails ? sanitizedEmail : uniqueUsername, + username: serverCfg.trustOidcEmails ? email : uniqueUsername, lastName, authMethods: [], isGhost: false @@ -291,7 +290,7 @@ export const oidcConfigServiceFactory = ({ userId: newUser.id, aliasType: UserAliasType.OIDC, externalId, - emails: sanitizedEmail ? [sanitizedEmail] : [], + emails: email ? [email] : [], orgId }, tx @@ -311,7 +310,7 @@ export const oidcConfigServiceFactory = ({ await orgMembershipDAL.create( { userId: newUser.id, - inviteEmail: sanitizedEmail, + inviteEmail: email, orgId, role, roleId, @@ -716,7 +715,7 @@ export const oidcConfigServiceFactory = ({ } oidcLogin({ - email: claims.email, + email: claims.email.toLowerCase(), externalId: claims.sub, firstName: claims.given_name ?? "", lastName: claims.family_name ?? "", diff --git a/backend/src/ee/services/saml-config/saml-config-service.ts b/backend/src/ee/services/saml-config/saml-config-service.ts index a6911275e..601347862 100644 --- a/backend/src/ee/services/saml-config/saml-config-service.ts +++ b/backend/src/ee/services/saml-config/saml-config-service.ts @@ -266,7 +266,7 @@ export const samlConfigServiceFactory = ({ await orgMembershipDAL.create( { userId: userAlias.userId, - inviteEmail: email.toLowerCase(), + inviteEmail: email, orgId, role, roleId, @@ -324,7 +324,7 @@ export const samlConfigServiceFactory = ({ if (serverCfg.trustSamlEmails) { newUser = await userDAL.findOne( { - email: email.toLowerCase(), + email, isEmailVerified: true }, tx @@ -335,8 +335,8 @@ export const samlConfigServiceFactory = ({ const uniqueUsername = await normalizeUsername(`${firstName ?? ""}-${lastName ?? ""}`, userDAL); newUser = await userDAL.create( { - username: serverCfg.trustSamlEmails ? email.toLowerCase() : uniqueUsername, - email: email.toLowerCase(), + username: serverCfg.trustSamlEmails ? email : uniqueUsername, + email, isEmailVerified: serverCfg.trustSamlEmails, firstName, lastName, @@ -352,7 +352,7 @@ export const samlConfigServiceFactory = ({ userId: newUser.id, aliasType: UserAliasType.SAML, externalId, - emails: email ? [email.toLowerCase()] : [], + emails: email ? [email] : [], orgId }, tx @@ -372,7 +372,7 @@ export const samlConfigServiceFactory = ({ await orgMembershipDAL.create( { userId: newUser.id, - inviteEmail: email.toLowerCase(), + inviteEmail: email, orgId, role, roleId, diff --git a/frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx b/frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx index 54f31601f..df3c1497c 100644 --- a/frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx +++ b/frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx @@ -82,9 +82,11 @@ export const SelectOrganizationPage = () => { {duplicateAccounts?.data?.myAccount?.username}.