From fa7020949cba961081fa3f4ce656a346f8cf209f Mon Sep 17 00:00:00 2001
From: =
Date: Wed, 7 May 2025 20:04:13 +0530
Subject: [PATCH] feat: resolve alignment issue and fixed sanitization to top
level
---
backend/src/ee/routes/v1/saml-router.ts | 2 +-
.../ee/services/oidc/oidc-config-service.ts | 17 ++++++++---------
.../saml-config/saml-config-service.ts | 12 ++++++------
.../pages/auth/SelectOrgPage/SelectOrgPage.tsx | 18 ++++++++++--------
4 files changed, 25 insertions(+), 24 deletions(-)
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} .
- We've detected multiple accounts using variations of the same email address.
- Please confirm that this account, {duplicateAccounts?.data?.myAccount?.username}, is
- the account you wish to retain.
+
+ We've detected multiple accounts using variations of the same email address.
+ Confirm to retain this account {duplicateAccounts?.data?.myAccount?.username}
+ . Upon confirmation other accounts will be removed .
+
@@ -121,13 +123,13 @@ export const SelectOrganizationPage = () => {
removeDuplicateEmails.mutate(undefined, {
onSuccess: () => {
createNotification({
- type: "info",
+ type: "success",
text: "Removed duplicate accounts"
});
setRemoveDuplicateLater(true);
@@ -140,9 +142,9 @@ export const SelectOrganizationPage = () => {
setRemoveDuplicateLater(true)}
- className="flex-grow"
+ className="flex-1 flex-grow"
>
- Do This Later
+ Ask Again Later?
{
className="mt-4"
onClick={handleLogout}
>
- Change account
+ Change Account