From a11f120a83a14ef044f81fe27a4f9f5cdb804cbf Mon Sep 17 00:00:00 2001 From: Akhil Mohan Date: Thu, 2 May 2024 20:23:23 +0530 Subject: [PATCH] feat: updated ui replication text and approval replication flag --- .../20240430024805_secret-replication.ts | 12 ++++++++ .../db/schemas/secret-approval-requests.ts | 3 +- .../v1/secret-approval-request-router.ts | 30 +++++++++---------- .../secret-replication-service.ts | 3 +- .../hooks/api/secretApprovalRequest/types.ts | 2 +- .../SecretApprovalRequest.tsx | 4 +-- .../SecretApprovalRequestChanges.tsx | 4 ++- .../ActionBar/CreateSecretImportForm.tsx | 3 +- .../SecretImportListView/SecretImportItem.tsx | 2 +- 9 files changed, 38 insertions(+), 25 deletions(-) diff --git a/backend/src/db/migrations/20240430024805_secret-replication.ts b/backend/src/db/migrations/20240430024805_secret-replication.ts index d3ec4d81f..d71bf465f 100644 --- a/backend/src/db/migrations/20240430024805_secret-replication.ts +++ b/backend/src/db/migrations/20240430024805_secret-replication.ts @@ -26,6 +26,12 @@ export async function up(knex: Knex): Promise { t.boolean("isReplicated"); }); } + + if (await knex.schema.hasTable(TableName.SecretApprovalRequest)) { + await knex.schema.alterTable(TableName.SecretApprovalRequest, (t) => { + t.boolean("isReplicated"); + }); + } } export async function down(knex: Knex): Promise { @@ -52,4 +58,10 @@ export async function down(knex: Knex): Promise { t.dropColumns("isReplicated"); }); } + + if (await knex.schema.hasTable(TableName.SecretApprovalRequest)) { + await knex.schema.alterTable(TableName.SecretApprovalRequest, (t) => { + t.dropColumn("isReplicated"); + }); + } } diff --git a/backend/src/db/schemas/secret-approval-requests.ts b/backend/src/db/schemas/secret-approval-requests.ts index 6ee97fbb6..77ad370b7 100644 --- a/backend/src/db/schemas/secret-approval-requests.ts +++ b/backend/src/db/schemas/secret-approval-requests.ts @@ -18,7 +18,8 @@ export const SecretApprovalRequestsSchema = z.object({ statusChangeBy: z.string().uuid().nullable().optional(), committerId: z.string().uuid(), createdAt: z.date(), - updatedAt: z.date() + updatedAt: z.date(), + isReplicated: z.boolean().nullable().optional() }); export type TSecretApprovalRequests = z.infer; diff --git a/backend/src/ee/routes/v1/secret-approval-request-router.ts b/backend/src/ee/routes/v1/secret-approval-request-router.ts index 2a9cc405d..b7204f72e 100644 --- a/backend/src/ee/routes/v1/secret-approval-request-router.ts +++ b/backend/src/ee/routes/v1/secret-approval-request-router.ts @@ -32,22 +32,20 @@ export const registerSecretApprovalRequestRouter = async (server: FastifyZodProv }), response: { 200: z.object({ - approvals: SecretApprovalRequestsSchema.merge( - z.object({ - // secretPath: z.string(), - policy: z.object({ - id: z.string(), - name: z.string(), - approvals: z.number(), - approvers: z.string().array(), - secretPath: z.string().optional().nullable() - }), - commits: z.object({ op: z.string(), secretId: z.string().nullable().optional() }).array(), - environment: z.string(), - reviewers: z.object({ member: z.string(), status: z.string() }).array(), - approvers: z.string().array() - }) - ).array() + approvals: SecretApprovalRequestsSchema.extend({ + // secretPath: z.string(), + policy: z.object({ + id: z.string(), + name: z.string(), + approvals: z.number(), + approvers: z.string().array(), + secretPath: z.string().optional().nullable() + }), + commits: z.object({ op: z.string(), secretId: z.string().nullable().optional() }).array(), + environment: z.string(), + reviewers: z.object({ member: z.string(), status: z.string() }).array(), + approvers: z.string().array() + }).array() }) } }, diff --git a/backend/src/services/secret-replication/secret-replication-service.ts b/backend/src/services/secret-replication/secret-replication-service.ts index 0d126db2f..1b1aed5a9 100644 --- a/backend/src/services/secret-replication/secret-replication-service.ts +++ b/backend/src/services/secret-replication/secret-replication-service.ts @@ -154,7 +154,8 @@ export const secretReplicationServiceFactory = ({ policyId: policy.id, status: "open", hasMerged: false, - committerId: membershipId + committerId: membershipId, + isReplicated: true }, tx ); diff --git a/frontend/src/hooks/api/secretApprovalRequest/types.ts b/frontend/src/hooks/api/secretApprovalRequest/types.ts index b7f8784a6..8c2ba6963 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/types.ts +++ b/frontend/src/hooks/api/secretApprovalRequest/types.ts @@ -44,7 +44,7 @@ export type TSecretApprovalSecChange = { export type TSecretApprovalRequest = { id: string; - isReplication?: boolean; + isReplicated?: boolean; slug: string; createdAt: string; committerId: string; diff --git a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/SecretApprovalRequest.tsx b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/SecretApprovalRequest.tsx index 8ab051217..ca4d3b897 100644 --- a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/SecretApprovalRequest.tsx +++ b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/SecretApprovalRequest.tsx @@ -213,7 +213,7 @@ export const SecretApprovalRequest = () => { policy, reviewers, status, - isReplication + isReplicated: isReplication } = secretApproval; const isApprover = policy?.approvers?.indexOf(myMembershipId || "") !== -1; const isReviewed = @@ -242,7 +242,7 @@ export const SecretApprovalRequest = () => { {membersGroupById?.[committerId]?.user?.firstName}{" "} {membersGroupById?.[committerId]?.user?.lastName} ( {membersGroupById?.[committerId]?.user?.email}) - {isReplication && "via replication"} + {isReplication && " via replication"} {isApprover && !isReviewed && status === "open" && " - Review required"} diff --git a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx index 449d0b774..4815c7535 100644 --- a/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx +++ b/frontend/src/views/SecretApprovalPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx @@ -185,7 +185,9 @@ export const SecretApprovalRequestChanges = ({
{generateCommitText(secretApprovalRequestDetails.commits)} - {secretApprovalRequestDetails.isReplication && (replication)} + {secretApprovalRequestDetails.isReplicated && ( + (replication) + )}
{committer?.user?.firstName} diff --git a/frontend/src/views/SecretMainPage/components/ActionBar/CreateSecretImportForm.tsx b/frontend/src/views/SecretMainPage/components/ActionBar/CreateSecretImportForm.tsx index 8c2739c2f..9afc73b06 100644 --- a/frontend/src/views/SecretMainPage/components/ActionBar/CreateSecretImportForm.tsx +++ b/frontend/src/views/SecretMainPage/components/ActionBar/CreateSecretImportForm.tsx @@ -144,8 +144,7 @@ export const CreateSecretImportForm = ({ defaultValue={false} render={({ field }) => ( - The replication mode retrieves secrets when changes occur in the specified - environment and secret path. + Enable replication mode to synchronize changes across boards. )} /> diff --git a/frontend/src/views/SecretMainPage/components/SecretImportListView/SecretImportItem.tsx b/frontend/src/views/SecretMainPage/components/SecretImportListView/SecretImportItem.tsx index 744a4be54..fa3897e4d 100644 --- a/frontend/src/views/SecretMainPage/components/SecretImportListView/SecretImportItem.tsx +++ b/frontend/src/views/SecretMainPage/components/SecretImportListView/SecretImportItem.tsx @@ -156,7 +156,7 @@ export const SecretImportItem = ({
- {isExpanded && !isDragging && ( + {!isReplication && isExpanded && !isDragging && (