From 5183f76397ad238050f95eede32a63efe315acd7 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Wed, 5 Mar 2025 02:29:18 +0400 Subject: [PATCH] fix: pathing --- .../secret-v2-bridge-service.ts | 19 ++++++++++++++++--- backend/src/services/secret/secret-service.ts | 12 +++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts index 9679107ee..ff896bf22 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts @@ -77,7 +77,13 @@ type TSecretV2BridgeServiceFactoryDep = { projectEnvDAL: Pick; folderDAL: Pick< TSecretFolderDALFactory, - "findBySecretPath" | "updateById" | "findById" | "findByManySecretPath" | "find" | "findBySecretPathMultiEnv" + | "findBySecretPath" + | "updateById" + | "findById" + | "findByManySecretPath" + | "find" + | "findBySecretPathMultiEnv" + | "findSecretPathByFolderIds" >; secretImportDAL: Pick; secretQueueService: Pick; @@ -1959,11 +1965,18 @@ export const secretV2BridgeServiceFactory = ({ secretId }: TGetSecretVersionsDTO) => { const secret = await secretDAL.findById(secretId); + if (!secret) throw new NotFoundError({ message: `Secret with ID '${secretId}' not found` }); const folder = await folderDAL.findById(secret.folderId); if (!folder) throw new NotFoundError({ message: `Folder with ID '${secret.folderId}' not found` }); + const [folderWithPath] = await folderDAL.findSecretPathByFolderIds(folder.projectId, [folder.id]); + + if (!folderWithPath) { + throw new NotFoundError({ message: `Folder with ID '${folder.id}' not found` }); + } + const { permission } = await permissionService.getProjectPermission({ actor, actorId, @@ -1988,7 +2001,7 @@ export const secretV2BridgeServiceFactory = ({ ProjectPermissionSecretActions.ReadValue, subject(ProjectPermissionSub.Secrets, { environment: folder.environment.envSlug, - secretPath: "/", + secretPath: folderWithPath.path, secretName: el.key, ...(el.tags?.length && { secretTags: el.tags.map((tag) => tag.slug) @@ -1998,7 +2011,7 @@ export const secretV2BridgeServiceFactory = ({ return reshapeBridgeSecret( folder.projectId, folder.environment.envSlug, - "/", + folderWithPath.path, { ...el, value: el.encryptedValue ? secretManagerDecryptor({ cipherTextBlob: el.encryptedValue }).toString() : "", diff --git a/backend/src/services/secret/secret-service.ts b/backend/src/services/secret/secret-service.ts index cd8971ded..66f1e4eaa 100644 --- a/backend/src/services/secret/secret-service.ts +++ b/backend/src/services/secret/secret-service.ts @@ -100,7 +100,7 @@ type TSecretServiceFactoryDep = { projectEnvDAL: Pick; folderDAL: Pick< TSecretFolderDALFactory, - "findBySecretPath" | "updateById" | "findById" | "findByManySecretPath" | "find" + "findBySecretPath" | "updateById" | "findById" | "findByManySecretPath" | "find" | "findSecretPathByFolderIds" >; secretV2BridgeService: TSecretV2BridgeServiceFactory; secretBlindIndexDAL: TSecretBlindIndexDALFactory; @@ -2378,6 +2378,12 @@ export const secretServiceFactory = ({ const folder = await folderDAL.findById(secret.folderId); if (!folder) throw new NotFoundError({ message: `Folder with ID '${secret.folderId}' not found` }); + const [folderWithPath] = await folderDAL.findSecretPathByFolderIds(folder.projectId, [folder.id]); + + if (!folderWithPath) { + throw new NotFoundError({ message: `Folder with ID '${folder.id}' not found` }); + } + const { botKey } = await projectBotService.getBotKey(folder.projectId); if (!botKey) throw new NotFoundError({ message: `Project bot for project with ID '${folder.projectId}' not found` }); @@ -2408,7 +2414,7 @@ export const secretServiceFactory = ({ ProjectPermissionSecretActions.ReadValue, subject(ProjectPermissionSub.Secrets, { environment: folder.environment.envSlug, - secretPath: "/", + secretPath: folderWithPath.path, secretName: secretKey, ...(el.tags?.length && { secretTags: el.tags.map((tag) => tag.slug) @@ -2422,7 +2428,7 @@ export const secretServiceFactory = ({ ...el, workspace: folder.projectId, environment: folder.environment.envSlug, - secretPath: "/" + secretPath: folderWithPath.path }, botKey );