From 81df491d5e2a12cc093fd21cb9e7566bace8fd18 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 11 Jun 2025 15:18:08 +0530 Subject: [PATCH] feat: reptile feedback and resolved type failure --- .../20250603094506_access-request-sequential.ts | 2 +- .../ee/routes/v1/access-approval-policy-router.ts | 12 ++++++++++-- .../access-approval-policy-dal.ts | 1 - .../access-approval-policy-service.ts | 4 ++-- backend/src/ee/services/license/license-fns.ts | 6 +++--- .../components/AccessPolicyModal.tsx | 2 +- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/backend/src/db/migrations/20250603094506_access-request-sequential.ts b/backend/src/db/migrations/20250603094506_access-request-sequential.ts index 22dfc3c30..67043050a 100644 --- a/backend/src/db/migrations/20250603094506_access-request-sequential.ts +++ b/backend/src/db/migrations/20250603094506_access-request-sequential.ts @@ -10,7 +10,7 @@ export async function up(knex: Knex): Promise { ); if (!hasStepColumn || !hasApprovalRequiredColumn) { await knex.schema.alterTable(TableName.AccessApprovalPolicyApprover, (t) => { - if (!hasStepColumn) t.integer("sequence").defaultTo(0); + if (!hasStepColumn) t.integer("sequence").defaultTo(1); if (!hasApprovalRequiredColumn) t.integer("approvalsRequired").nullable(); }); } diff --git a/backend/src/ee/routes/v1/access-approval-policy-router.ts b/backend/src/ee/routes/v1/access-approval-policy-router.ts index 6b3ae3679..68408a05f 100644 --- a/backend/src/ee/routes/v1/access-approval-policy-router.ts +++ b/backend/src/ee/routes/v1/access-approval-policy-router.ts @@ -37,7 +37,11 @@ export const registerAccessApprovalPolicyRouter = async (server: FastifyZodProvi ]) .array() .max(100, "Cannot have more than 100 approvers") - .min(1, { message: "At least one approver should be provided" }), + .min(1, { message: "At least one approver should be provided" }) + .refine( + (el) => el.every((i) => Object.hasOwn(i, "id") || Object.hasOwn(i, "username")), + "Must provide either username or id" + ), bypassers: z .discriminatedUnion("type", [ z.object({ type: z.literal(BypasserType.Group), id: z.string() }), @@ -187,7 +191,11 @@ export const registerAccessApprovalPolicyRouter = async (server: FastifyZodProvi ]) .array() .min(1, { message: "At least one approver should be provided" }) - .max(100, "Cannot have more than 100 approvers"), + .max(100, "Cannot have more than 100 approvers") + .refine( + (el) => el.every((i) => Object.hasOwn(i, "id") || Object.hasOwn(i, "username")), + "Must provide either username or id" + ), bypassers: z .discriminatedUnion("type", [ z.object({ type: z.literal(BypasserType.Group), id: z.string() }), diff --git a/backend/src/ee/services/access-approval-policy/access-approval-policy-dal.ts b/backend/src/ee/services/access-approval-policy/access-approval-policy-dal.ts index d08d9dbf6..6b1c084d3 100644 --- a/backend/src/ee/services/access-approval-policy/access-approval-policy-dal.ts +++ b/backend/src/ee/services/access-approval-policy/access-approval-policy-dal.ts @@ -50,7 +50,6 @@ export const accessApprovalPolicyDALFactory = (db: TDbClient) => { .select(tx.ref("approverGroupId").withSchema(TableName.AccessApprovalPolicyApprover)) .select(tx.ref("sequence").withSchema(TableName.AccessApprovalPolicyApprover).as("approverSequence")) .select(tx.ref("approvalsRequired").withSchema(TableName.AccessApprovalPolicyApprover)) - .select(tx.ref("approverGroupId").withSchema(TableName.AccessApprovalPolicyApprover)) .select(tx.ref("bypasserUserId").withSchema(TableName.AccessApprovalPolicyBypasser)) .select(tx.ref("bypasserGroupId").withSchema(TableName.AccessApprovalPolicyBypasser)) .select(tx.ref("name").withSchema(TableName.Environment).as("envName")) diff --git a/backend/src/ee/services/access-approval-policy/access-approval-policy-service.ts b/backend/src/ee/services/access-approval-policy/access-approval-policy-service.ts index 70fe2d04c..612b9a340 100644 --- a/backend/src/ee/services/access-approval-policy/access-approval-policy-service.ts +++ b/backend/src/ee/services/access-approval-policy/access-approval-policy-service.ts @@ -132,7 +132,7 @@ export const accessApprovalPolicyServiceFactory = ({ approverUserIds = approverUserIds.concat( userApproverNames.map((el) => ({ - id: approverUsersInDBGroupByUsername[el.username]?.[0].username, + id: approverUsersInDBGroupByUsername[el.username]?.[0].id, sequence: el.sequence })) ); @@ -427,7 +427,7 @@ export const accessApprovalPolicyServiceFactory = ({ approverUserIds = approverUserIds.concat( userApproverNames.map((el) => ({ - id: approverUsersInDBGroupByUsername[el.username]?.[0].username, + id: approverUsersInDBGroupByUsername[el.username]?.[0].id, sequence: el.sequence })) ); diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index c07e37fcb..c2db3e6e7 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -36,12 +36,12 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ oidcSSO: false, scim: false, ldap: false, - groups: true, + groups: false, status: null, trial_end: null, has_used_trial: true, - secretApproval: true, - secretRotation: true, + secretApproval: false, + secretRotation: false, caCrl: false, instanceUserManagement: false, externalKms: false, diff --git a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/ApprovalPolicyList/components/AccessPolicyModal.tsx b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/ApprovalPolicyList/components/AccessPolicyModal.tsx index e7e00d7eb..0a3aa0597 100644 --- a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/ApprovalPolicyList/components/AccessPolicyModal.tsx +++ b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/ApprovalPolicyList/components/AccessPolicyModal.tsx @@ -158,7 +158,7 @@ export const AccessPolicyForm = ({ ?.sort((a, b) => (a?.sequence || 0) - (b?.sequence || 0)) .reduce( (acc, curr) => { - if (acc.length > 1 && acc[acc.length - 1].sequence === curr.sequence) { + if (acc.length && acc[acc.length - 1].sequence === curr.sequence) { acc[acc.length - 1][curr.type]?.push(curr); return acc; }