mirror of
https://github.com/Infisical/infisical.git
synced 2026-01-09 15:38:03 -05:00
Refactor folder controller
This commit is contained in:
@@ -1,15 +1,61 @@
|
||||
import { Request, Response } from 'express';
|
||||
import { Secret } from '../../models';
|
||||
import Folder from '../../models/folder';
|
||||
import { BadRequestError } from '../../utils/errors';
|
||||
|
||||
// export const createFolder = async (req: Request, res: Response) => {
|
||||
export const createFolder = async (req: Request, res: Response) => {
|
||||
const { workspaceId, environment, folderName, parentFolderId } = req.body
|
||||
if (parentFolderId) {
|
||||
const parentFolder = await Folder.findById(parentFolderId);
|
||||
if (!parentFolder) {
|
||||
throw BadRequestError({ message: "The parent folder doesn't exist" })
|
||||
}
|
||||
}
|
||||
|
||||
// };
|
||||
const existingFolder = await Folder.findOne({
|
||||
name: folderName,
|
||||
workspace: workspaceId,
|
||||
environment: environment,
|
||||
parent: parentFolderId,
|
||||
});
|
||||
|
||||
// export const deleteFolder = async (req: Request, res: Response) => {
|
||||
if (existingFolder) {
|
||||
return res.json(existingFolder)
|
||||
}
|
||||
|
||||
// };
|
||||
const newFolder = new Folder({
|
||||
name: folderName,
|
||||
workspace: workspaceId,
|
||||
environment: environment,
|
||||
parent: parentFolderId,
|
||||
});
|
||||
|
||||
// export const moveSecretsBetweenFolders = async (req: Request, res: Response) => {
|
||||
await newFolder.save();
|
||||
|
||||
// };
|
||||
return res.json(newFolder)
|
||||
}
|
||||
|
||||
export const deleteFolder = async (req: Request, res: Response) => {
|
||||
const { folderId } = req.params
|
||||
const queue: any[] = [folderId];
|
||||
|
||||
const folder = await Folder.findById(folderId);
|
||||
if (!folder) {
|
||||
throw BadRequestError({ message: "The folder doesn't exist" })
|
||||
}
|
||||
|
||||
while (queue.length > 0) {
|
||||
const currentFolderId = queue.shift();
|
||||
|
||||
const childFolders = await Folder.find({ parent: currentFolderId });
|
||||
for (const childFolder of childFolders) {
|
||||
queue.push(childFolder._id);
|
||||
}
|
||||
|
||||
await Secret.deleteMany({ folder: currentFolderId });
|
||||
|
||||
await Folder.deleteOne({ _id: currentFolderId });
|
||||
}
|
||||
|
||||
res.send()
|
||||
}
|
||||
@@ -374,9 +374,9 @@ export const createSecrets = async (req: Request, res: Response) => {
|
||||
secretCommentIV,
|
||||
secretCommentTag,
|
||||
tags,
|
||||
folderId
|
||||
folder
|
||||
} of listOfSecretsToCreate) {
|
||||
const fullFolderPath = await getFolderPath(folderId)
|
||||
const fullFolderPath = await getFolderPath(folder)
|
||||
|
||||
const secret: any = {
|
||||
version: 1,
|
||||
@@ -394,6 +394,7 @@ export const createSecrets = async (req: Request, res: Response) => {
|
||||
secretCommentIV,
|
||||
secretCommentTag,
|
||||
tags,
|
||||
folder: folder,
|
||||
path: fullFolderPath
|
||||
};
|
||||
|
||||
@@ -792,10 +793,10 @@ export const updateSecrets = async (req: Request, res: Response) => {
|
||||
secretCommentIV,
|
||||
secretCommentTag,
|
||||
tags,
|
||||
folderId
|
||||
folder
|
||||
} = secret;
|
||||
|
||||
const fullFolderPath = await getFolderPath(folderId)
|
||||
const fullFolderPath = await getFolderPath(folder)
|
||||
|
||||
const updateOperation = {
|
||||
updateOne: {
|
||||
@@ -812,6 +813,7 @@ export const updateSecrets = async (req: Request, res: Response) => {
|
||||
secretValueTag,
|
||||
tags,
|
||||
path: fullFolderPath,
|
||||
folder: folder,
|
||||
...((
|
||||
secretCommentCiphertext !== undefined &&
|
||||
secretCommentIV &&
|
||||
|
||||
@@ -5,9 +5,7 @@ import {
|
||||
validateRequest
|
||||
} from '../../middleware';
|
||||
import { body, param } from 'express-validator';
|
||||
import Folder from '../../models/folder';
|
||||
import { BadRequestError } from '../../utils/errors';
|
||||
import { Secret } from '../../models';
|
||||
import { createFolder, deleteFolder } from '../../controllers/v1/secretsFolderController';
|
||||
|
||||
router.post(
|
||||
'/',
|
||||
@@ -19,37 +17,7 @@ router.post(
|
||||
body('folderName').exists(),
|
||||
body('parentFolderId'),
|
||||
validateRequest,
|
||||
async (req: Request, res: Response) => {
|
||||
const { workspaceId, environment, folderName, parentFolderId } = req.body
|
||||
if (parentFolderId) {
|
||||
const parentFolder = await Folder.findById(parentFolderId);
|
||||
if (!parentFolder) {
|
||||
throw BadRequestError({ message: "The parent folder doesn't exist" })
|
||||
}
|
||||
}
|
||||
|
||||
const existingFolder = await Folder.findOne({
|
||||
name: folderName,
|
||||
workspace: workspaceId,
|
||||
environment: environment,
|
||||
parent: parentFolderId,
|
||||
});
|
||||
|
||||
if (existingFolder) {
|
||||
return res.json(existingFolder)
|
||||
}
|
||||
|
||||
const newFolder = new Folder({
|
||||
name: folderName,
|
||||
workspace: workspaceId,
|
||||
environment: environment,
|
||||
parent: parentFolderId,
|
||||
});
|
||||
|
||||
await newFolder.save();
|
||||
|
||||
return res.json(newFolder)
|
||||
}
|
||||
createFolder
|
||||
);
|
||||
|
||||
router.delete(
|
||||
@@ -59,30 +27,7 @@ router.delete(
|
||||
}),
|
||||
param('folderId').exists(),
|
||||
validateRequest,
|
||||
async (req: Request, res: Response) => {
|
||||
const { folderId } = req.params
|
||||
const queue: any[] = [folderId];
|
||||
|
||||
const folder = await Folder.findById(folderId);
|
||||
if (!folder) {
|
||||
throw BadRequestError({ message: "The folder doesn't exist" })
|
||||
}
|
||||
|
||||
while (queue.length > 0) {
|
||||
const currentFolderId = queue.shift();
|
||||
|
||||
const childFolders = await Folder.find({ parent: currentFolderId });
|
||||
for (const childFolder of childFolders) {
|
||||
queue.push(childFolder._id);
|
||||
}
|
||||
|
||||
await Secret.deleteMany({ folder: currentFolderId });
|
||||
|
||||
await Folder.deleteOne({ _id: currentFolderId });
|
||||
}
|
||||
|
||||
res.send()
|
||||
}
|
||||
deleteFolder
|
||||
);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user