Merge pull request #3913 from Infisical/daniel/fix-folder-deletion

fix(secret-folders): delete folder by ID
This commit is contained in:
Daniel Hougaard
2025-07-03 03:49:01 +04:00
committed by GitHub
@@ -478,12 +478,25 @@ export const secretFolderServiceFactory = ({
parentId: string; parentId: string;
idOrName: string; idOrName: string;
}) => { }) => {
const targetFolder = await folderDAL.findOne({ let targetFolder = await folderDAL
envId: env.id, .findOne({
[uuidValidate(idOrName) ? "id" : "name"]: idOrName, envId: env.id,
parentId, name: idOrName,
isReserved: false parentId,
}); isReserved: false
})
.catch(() => null);
if (!targetFolder && uuidValidate(idOrName)) {
targetFolder = await folderDAL
.findOne({
envId: env.id,
id: idOrName,
parentId,
isReserved: false
})
.catch(() => null);
}
if (!targetFolder) { if (!targetFolder) {
throw new NotFoundError({ message: `Target folder not found` }); throw new NotFoundError({ message: `Target folder not found` });
@@ -506,7 +519,7 @@ export const secretFolderServiceFactory = ({
} }
// Find the target folder in the folderPaths to get its full details // Find the target folder in the folderPaths to get its full details
const targetFolderWithPath = folderPaths.find((f) => f.id === targetFolder.id); const targetFolderWithPath = folderPaths.find((f) => f.id === targetFolder!.id);
if (!targetFolderWithPath) { if (!targetFolderWithPath) {
throw new NotFoundError({ message: `Target folder path not found` }); throw new NotFoundError({ message: `Target folder path not found` });
} }
@@ -589,18 +602,40 @@ export const secretFolderServiceFactory = ({
await $checkFolderPolicy({ projectId, env, parentId: parentFolder.id, idOrName }); await $checkFolderPolicy({ projectId, env, parentId: parentFolder.id, idOrName });
let folderToDelete = await folderDAL
.findOne({
envId: env.id,
name: idOrName,
parentId: parentFolder.id,
isReserved: false
})
.catch(() => null);
if (!folderToDelete && uuidValidate(idOrName)) {
folderToDelete = await folderDAL
.findOne({
envId: env.id,
id: idOrName,
parentId: parentFolder.id,
isReserved: false
})
.catch(() => null);
}
if (!folderToDelete) {
throw new NotFoundError({ message: `Folder with ID '${idOrName}' not found` });
}
const [doc] = await folderDAL.delete( const [doc] = await folderDAL.delete(
{ {
envId: env.id, envId: env.id,
[uuidValidate(idOrName) ? "id" : "name"]: idOrName, id: folderToDelete.id,
parentId: parentFolder.id, parentId: parentFolder.id,
isReserved: false isReserved: false
}, },
tx tx
); );
if (!doc) throw new NotFoundError({ message: `Failed to delete folder with ID '${idOrName}', not found` });
const folderVersions = await folderVersionDAL.findLatestFolderVersions([doc.id], tx); const folderVersions = await folderVersionDAL.findLatestFolderVersions([doc.id], tx);
await folderCommitService.createCommit( await folderCommitService.createCommit(