From eca2b3ccdefc217f0694aca5403e0a8d332207ad Mon Sep 17 00:00:00 2001 From: = Date: Thu, 1 May 2025 13:53:14 +0530 Subject: [PATCH] feat: rabbit and reptile feedback changes --- backend/src/ee/services/license/license-fns.ts | 2 +- backend/src/ee/services/oidc/oidc-config-service.ts | 2 +- backend/src/server/routes/v2/project-membership-router.ts | 7 ++++++- backend/src/services/auth/auth-login-service.ts | 4 ++-- backend/src/services/auth/auth-signup-service.ts | 8 ++++---- backend/src/services/super-admin/super-admin-service.ts | 4 ++-- backend/src/services/user/user-service.ts | 2 +- frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx | 2 +- 8 files changed, 18 insertions(+), 13 deletions(-) diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index 22f4bcffe..b7ae6f7ee 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -30,7 +30,7 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ auditLogsRetentionDays: 0, auditLogStreams: false, auditLogStreamLimit: 3, - samlSSO: true, + samlSSO: false, hsm: false, oidcSSO: false, scim: false, diff --git a/backend/src/ee/services/oidc/oidc-config-service.ts b/backend/src/ee/services/oidc/oidc-config-service.ts index f6a69a01f..15932cb48 100644 --- a/backend/src/ee/services/oidc/oidc-config-service.ts +++ b/backend/src/ee/services/oidc/oidc-config-service.ts @@ -181,7 +181,7 @@ export const oidcConfigServiceFactory = ({ manageGroupMemberships }: TOidcLoginDTO) => { const serverCfg = await getServerCfg(); - const sanitizedEmail = email.toLowerCase(); + const sanitizedEmail = email.trim().toLowerCase(); if (serverCfg.enabledLoginMethods && !serverCfg.enabledLoginMethods.includes(LoginMethod.OIDC)) { throw new ForbiddenRequestError({ diff --git a/backend/src/server/routes/v2/project-membership-router.ts b/backend/src/server/routes/v2/project-membership-router.ts index 7891e3407..76f1e9c5e 100644 --- a/backend/src/server/routes/v2/project-membership-router.ts +++ b/backend/src/server/routes/v2/project-membership-router.ts @@ -110,7 +110,12 @@ export const registerProjectMembershipRouter = async (server: FastifyZodProvider .default([]) .describe(PROJECT_USERS.REMOVE_MEMBER.emails) .refine((val) => val.every((el) => el === el.toLowerCase()), "Email must be lowercase"), - usernames: z.string().array().default([]).describe(PROJECT_USERS.REMOVE_MEMBER.usernames) + usernames: z + .string() + .array() + .default([]) + .describe(PROJECT_USERS.REMOVE_MEMBER.usernames) + .refine((val) => val.every((el) => el === el.toLowerCase()), "Username must be lowercase") }), response: { 200: z.object({ diff --git a/backend/src/services/auth/auth-login-service.ts b/backend/src/services/auth/auth-login-service.ts index dac81522d..bee85b14c 100644 --- a/backend/src/services/auth/auth-login-service.ts +++ b/backend/src/services/auth/auth-login-service.ts @@ -723,8 +723,8 @@ export const authLoginServiceFactory = ({ } user = await userDAL.create({ - username: email.toLowerCase(), - email: email.toLowerCase(), + username: email.trim().toLowerCase(), + email: email.trim().toLowerCase(), isEmailVerified: true, firstName, lastName, diff --git a/backend/src/services/auth/auth-signup-service.ts b/backend/src/services/auth/auth-signup-service.ts index ea13bfd9a..7e11f25cb 100644 --- a/backend/src/services/auth/auth-signup-service.ts +++ b/backend/src/services/auth/auth-signup-service.ts @@ -73,7 +73,7 @@ export const authSignupServiceFactory = ({ }: TAuthSignupDep) => { // first step of signup. create user and send email const beginEmailSignupProcess = async (email: string) => { - const sanitizedEmail = email.toLowerCase(); + const sanitizedEmail = email.trim().toLowerCase(); const isEmailInvalid = await isDisposableEmail(sanitizedEmail); if (isEmailInvalid) { throw new Error("Provided a disposable email"); @@ -113,7 +113,7 @@ export const authSignupServiceFactory = ({ }; const verifyEmailSignup = async (email: string, code: string) => { - const sanitizedEmail = email.toLowerCase(); + const sanitizedEmail = email.trim().toLowerCase(); const usersByUsername = await userDAL.findUserByUsername(sanitizedEmail); const user = usersByUsername?.length > 1 ? usersByUsername.find((el) => el.username === sanitizedEmail) : usersByUsername?.[0]; @@ -166,7 +166,7 @@ export const authSignupServiceFactory = ({ authorization, useDefaultOrg }: TCompleteAccountSignupDTO) => { - const sanitizedEmail = email.toLowerCase(); + const sanitizedEmail = email.trim().toLowerCase(); const appCfg = getConfig(); const serverCfg = await getServerCfg(); @@ -415,7 +415,7 @@ export const authSignupServiceFactory = ({ encryptedPrivateKeyTag, authorization }: TCompleteAccountInviteDTO) => { - const sanitizedEmail = email.toLowerCase(); + const sanitizedEmail = email.trim().toLowerCase(); const usersByUsername = await userDAL.findUserByUsername(sanitizedEmail); const user = usersByUsername?.length > 1 ? usersByUsername.find((el) => el.username === sanitizedEmail) : usersByUsername?.[0]; diff --git a/backend/src/services/super-admin/super-admin-service.ts b/backend/src/services/super-admin/super-admin-service.ts index 1c7368c3f..04dfa253b 100644 --- a/backend/src/services/super-admin/super-admin-service.ts +++ b/backend/src/services/super-admin/super-admin-service.ts @@ -272,7 +272,7 @@ export const superAdminServiceFactory = ({ userAgent }: TAdminSignUpDTO) => { const appCfg = getConfig(); - const sanitizedEmail = email.toLowerCase(); + const sanitizedEmail = email.trim().toLowerCase(); const existingUser = await userDAL.findOne({ username: sanitizedEmail }); if (existingUser) throw new BadRequestError({ name: "Admin sign up", message: "User already exists" }); @@ -349,7 +349,7 @@ export const superAdminServiceFactory = ({ const bootstrapInstance = async ({ email, password, organizationName }: TAdminBootstrapInstanceDTO) => { const appCfg = getConfig(); - const sanitizedEmail = email.toLowerCase(); + const sanitizedEmail = email.trim().toLowerCase(); const serverCfg = await serverCfgDAL.findById(ADMIN_CONFIG_DB_UUID); if (serverCfg?.initialized) { throw new BadRequestError({ message: "Instance has already been set up" }); diff --git a/backend/src/services/user/user-service.ts b/backend/src/services/user/user-service.ts index 89d343b68..8183b017f 100644 --- a/backend/src/services/user/user-service.ts +++ b/backend/src/services/user/user-service.ts @@ -230,7 +230,7 @@ export const userServiceFactory = ({ if (duplicatedAccounts.length && myAccount) { await userDAL.transaction(async (tx) => { await userDAL.delete({ $in: { id: duplicatedAccounts?.map((el) => el.id) } }, tx); - await userDAL.updateById(userId, { username: myAccount.username.toLowerCase() }); + await userDAL.updateById(userId, { username: myAccount.username.toLowerCase() }, tx); }); } }; diff --git a/frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx b/frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx index 38d808366..54f31601f 100644 --- a/frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx +++ b/frontend/src/pages/auth/SelectOrgPage/SelectOrgPage.tsx @@ -89,7 +89,7 @@ export const SelectOrganizationPage = () => {
{duplicateAccounts?.data?.duplicateAccounts?.map((el) => { - const lastSession = el.devices.at(-1); + const lastSession = el.devices?.at(-1); return (