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 0f5f3f3db..bcc4a36c5 100644 --- a/backend/src/ee/routes/v1/secret-approval-request-router.ts +++ b/backend/src/ee/routes/v1/secret-approval-request-router.ts @@ -261,31 +261,30 @@ export const registerSecretApprovalRequestRouter = async (server: FastifyZodProv secretPath: z.string(), commits: secretRawSchema .omit({ _id: true, environment: true, workspace: true, type: true, version: true }) - .merge( - z.object({ - tags: tagSchema, - secret: z - .object({ - id: z.string(), - version: z.number(), - secretKey: z.string(), - secretValue: z.string().optional(), - secretComment: z.string().optional() - }) - .optional() - .nullable(), - secretVersion: z - .object({ - id: z.string(), - version: z.number(), - secretKey: z.string(), - secretValue: z.string().optional(), - secretComment: z.string().optional(), - tags: tagSchema - }) - .optional() - }) - ) + .extend({ + op: z.string(), + tags: tagSchema, + secret: z + .object({ + id: z.string(), + version: z.number(), + secretKey: z.string(), + secretValue: z.string().optional(), + secretComment: z.string().optional() + }) + .optional() + .nullable(), + secretVersion: z + .object({ + id: z.string(), + version: z.number(), + secretKey: z.string(), + secretValue: z.string().optional(), + secretComment: z.string().optional(), + tags: tagSchema + }) + .optional() + }) .array() }) ) diff --git a/backend/src/ee/routes/v1/snapshot-router.ts b/backend/src/ee/routes/v1/snapshot-router.ts index aa1e66be2..a716aabd7 100644 --- a/backend/src/ee/routes/v1/snapshot-router.ts +++ b/backend/src/ee/routes/v1/snapshot-router.ts @@ -29,17 +29,16 @@ export const registerSnapshotRouter = async (server: FastifyZodProvider) => { name: z.string() }), secretVersions: secretRawSchema - .omit({ _id: true, environment: true, workspace: true, type: true, version: true }) - .merge( - z.object({ - tags: SecretTagsSchema.pick({ - id: true, - slug: true, - name: true, - color: true - }).array() - }) - ) + .omit({ _id: true, environment: true, workspace: true, type: true }) + .extend({ + secretId: z.string(), + tags: SecretTagsSchema.pick({ + id: true, + slug: true, + name: true, + color: true + }).array() + }) .array(), folderVersion: z.object({ id: z.string(), name: z.string() }).array(), createdAt: z.date(), diff --git a/backend/src/ee/services/secret-approval-request/secret-approval-request-secret-dal.ts b/backend/src/ee/services/secret-approval-request/secret-approval-request-secret-dal.ts index 998bc4bcf..ab0ad7ed3 100644 --- a/backend/src/ee/services/secret-approval-request/secret-approval-request-secret-dal.ts +++ b/backend/src/ee/services/secret-approval-request/secret-approval-request-secret-dal.ts @@ -242,7 +242,7 @@ export const secretApprovalRequestSecretDALFactory = (db: TDbClient) => { `${TableName.SecretApprovalRequestSecretTagV2}.tagId`, `${TableName.SecretTag}.id` ) - .leftJoin(TableName.SecretV2, `${TableName.SecretApprovalRequestSecretV2}.secretId`, `${TableName.Secret}.id`) + .leftJoin(TableName.SecretV2, `${TableName.SecretApprovalRequestSecretV2}.secretId`, `${TableName.SecretV2}.id`) .leftJoin( TableName.SecretVersionV2, `${TableName.SecretVersionV2}.id`, diff --git a/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts b/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts index d351cfc8e..f0cdf0951 100644 --- a/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts +++ b/backend/src/ee/services/secret-approval-request/secret-approval-request-service.ts @@ -230,28 +230,32 @@ export const secretApprovalRequestServiceFactory = ({ secretComment: el.encryptedComment ? secretManagerDecryptor({ cipherTextBlob: el.encryptedComment }).toString() : undefined, - secret: { - secretKey: el.secret.key, - id: el.secret.id, - version: el.secret.version, - secretValue: el.secret.encryptedValue - ? secretManagerDecryptor({ cipherTextBlob: el.secret.encryptedValue }).toString() - : undefined, - secretComment: el.secret.encryptedComment - ? secretManagerDecryptor({ cipherTextBlob: el.secret.encryptedComment }).toString() - : undefined - }, - secretVersion: { - secretKey: el.secretVersion.key, - id: el.secretVersion.id, - version: el.secretVersion.version, - secretValue: el.secretVersion.encryptedValue - ? secretManagerDecryptor({ cipherTextBlob: el.secretVersion.encryptedValue }).toString() - : undefined, - secretComment: el.secretVersion.encryptedComment - ? secretManagerDecryptor({ cipherTextBlob: el.secretVersion.encryptedComment }).toString() - : undefined - } + secret: el.secret + ? { + secretKey: el.secret.key, + id: el.secret.id, + version: el.secret.version, + secretValue: el.secret.encryptedValue + ? secretManagerDecryptor({ cipherTextBlob: el.secret.encryptedValue }).toString() + : undefined, + secretComment: el.secret.encryptedComment + ? secretManagerDecryptor({ cipherTextBlob: el.secret.encryptedComment }).toString() + : undefined + } + : undefined, + secretVersion: el.secretVersion + ? { + secretKey: el.secretVersion.key, + id: el.secretVersion.id, + version: el.secretVersion.version, + secretValue: el.secretVersion.encryptedValue + ? secretManagerDecryptor({ cipherTextBlob: el.secretVersion.encryptedValue }).toString() + : undefined, + secretComment: el.secretVersion.encryptedComment + ? secretManagerDecryptor({ cipherTextBlob: el.secretVersion.encryptedComment }).toString() + : undefined + } + : undefined })); } else { if (!botKey) throw new BadRequestError({ message: "Bot key not found" }); @@ -259,16 +263,20 @@ export const secretApprovalRequestServiceFactory = ({ secrets = encrypedSecrets.map((el) => ({ ...el, ...decryptSecretWithBot(el, botKey), - secret: { - id: el.secret.id, - version: el.secret.version, - ...decryptSecretWithBot(el.secret, botKey) - }, - secretVersion: { - id: el.secretVersion.id, - version: el.secretVersion.version, - ...decryptSecretWithBot(el.secretVersion, botKey) - } + secret: el.secret + ? { + id: el.secret.id, + version: el.secret.version, + ...decryptSecretWithBot(el.secret, botKey) + } + : undefined, + secretVersion: el.secretVersion + ? { + id: el.secretVersion.id, + version: el.secretVersion.version, + ...decryptSecretWithBot(el.secretVersion, botKey) + } + : undefined })); } const secretPath = await folderDAL.findSecretPathByFolderIds(secretApprovalRequest.projectId, [ diff --git a/backend/src/ee/services/secret-snapshot/snapshot-dal.ts b/backend/src/ee/services/secret-snapshot/snapshot-dal.ts index e53496127..399aec44c 100644 --- a/backend/src/ee/services/secret-snapshot/snapshot-dal.ts +++ b/backend/src/ee/services/secret-snapshot/snapshot-dal.ts @@ -505,7 +505,7 @@ export const snapshotDALFactory = (db: TDbClient) => { db.ref("max").withSchema("secGroupByMaxVersion").as("latestSecretVersion"), db.ref("max").withSchema("folderGroupByMaxVersion").as("latestFolderVersion"), db.ref("id").withSchema(TableName.SecretTag).as("tagId"), - db.ref("id").withSchema(TableName.SecretVersionTag).as("tagVersionId"), + db.ref("id").withSchema(TableName.SecretVersionV2Tag).as("tagVersionId"), db.ref("color").withSchema(TableName.SecretTag).as("tagColor"), db.ref("slug").withSchema(TableName.SecretTag).as("tagSlug"), db.ref("name").withSchema(TableName.SecretTag).as("tagName")