From 6ce0f48b2c3857a449a54d867ab6286a36192d93 Mon Sep 17 00:00:00 2001 From: akhilmhdh Date: Tue, 30 May 2023 20:20:29 +0530 Subject: [PATCH] fix(folders): fixed algorithm missing in rollback versions and resolved env change reset folderid --- .../controllers/v1/secretsFolderController.ts | 2 +- .../src/controllers/v2/secretsController.ts | 2 +- .../ee/controllers/v1/workspaceController.ts | 33 ++++++++++++------- backend/src/ee/models/secretVersion.ts | 2 ++ .../src/views/DashboardPage/DashboardPage.tsx | 14 +++++--- 5 files changed, 35 insertions(+), 18 deletions(-) diff --git a/backend/src/controllers/v1/secretsFolderController.ts b/backend/src/controllers/v1/secretsFolderController.ts index 5f167e337..6671e21ef 100644 --- a/backend/src/controllers/v1/secretsFolderController.ts +++ b/backend/src/controllers/v1/secretsFolderController.ts @@ -116,7 +116,7 @@ export const updateFolderById = async (req: Request, res: Response) => { await EESecretService.takeSecretSnapshot({ workspaceId, environment, - folderId: parentFolder.name === "root" ? undefined : parentFolder.id, + folderId: parentFolder.id, }); } diff --git a/backend/src/controllers/v2/secretsController.ts b/backend/src/controllers/v2/secretsController.ts index f9d8ea217..1edb22d72 100644 --- a/backend/src/controllers/v2/secretsController.ts +++ b/backend/src/controllers/v2/secretsController.ts @@ -649,7 +649,7 @@ export const getSecrets = async (req: Request, res: Response) => { const folders = await Folder.findOne({ workspace: workspaceId, environment }); if ( - (!folders && folderId !== "root" && folderId) || + (!folders && folderId && folderId !== "root") || (!folders && secretPath) ) { throw BadRequestError({ message: "Folder not found" }); diff --git a/backend/src/ee/controllers/v1/workspaceController.ts b/backend/src/ee/controllers/v1/workspaceController.ts index 64309abce..5709d45e2 100644 --- a/backend/src/ee/controllers/v1/workspaceController.ts +++ b/backend/src/ee/controllers/v1/workspaceController.ts @@ -300,6 +300,8 @@ export const rollbackWorkspaceSecretSnapshot = async ( secretValueTag, secretValueHash, createdAt, + algorithm, + keyEncoding, folder: secFolderId, } = oldSecretVersionsObj[secretId.toString()]; @@ -323,6 +325,8 @@ export const rollbackWorkspaceSecretSnapshot = async ( secretCommentIV: "", secretCommentTag: "", createdAt, + algorithm, + keyEncoding, folder: secFolderId, }; }) @@ -347,6 +351,8 @@ export const rollbackWorkspaceSecretSnapshot = async ( secretValueIV, secretValueTag, secretValueHash, + algorithm, + keyEncoding, folder: secFolderId, }) => ({ _id: new Types.ObjectId(), @@ -366,22 +372,27 @@ export const rollbackWorkspaceSecretSnapshot = async ( secretValueIV, secretValueTag, secretValueHash, + algorithm, + keyEncoding, folder: secFolderId, }) ) ); - const newFolder = new Folder(folders); - newFolder._id = new Types.ObjectId(); - newFolder.isNew = true; - await newFolder.save(); - // create new folder version - const newFolderVersion = new FolderVersion({ - workspace: workspaceId, - environment, - nodes: newFolder.nodes, - }); - await newFolderVersion.save(); + if (folders) { + const newFolder = new Folder(folders); + newFolder._id = new Types.ObjectId(); + newFolder.isNew = true; + // when there is no + await newFolder.save(); + // create new folder version + const newFolderVersion = new FolderVersion({ + workspace: workspaceId, + environment, + nodes: newFolder.nodes, + }); + await newFolderVersion.save(); + } // update secret versions of restored secrets as not deleted await SecretVersion.updateMany( diff --git a/backend/src/ee/models/secretVersion.ts b/backend/src/ee/models/secretVersion.ts index 580b9ffcb..ea0fc37c5 100644 --- a/backend/src/ee/models/secretVersion.ts +++ b/backend/src/ee/models/secretVersion.ts @@ -99,11 +99,13 @@ const secretVersionSchema = new Schema( type: String, enum: [ALGORITHM_AES_256_GCM], required: true, + default: ALGORITHM_AES_256_GCM, }, keyEncoding: { type: String, enum: [ENCODING_SCHEME_UTF8, ENCODING_SCHEME_BASE64], required: true, + default: ENCODING_SCHEME_UTF8, }, folder: { type: String, diff --git a/frontend/src/views/DashboardPage/DashboardPage.tsx b/frontend/src/views/DashboardPage/DashboardPage.tsx index 94bf9a7bd..a760d0067 100644 --- a/frontend/src/views/DashboardPage/DashboardPage.tsx +++ b/frontend/src/views/DashboardPage/DashboardPage.tsx @@ -392,9 +392,11 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { } const env = wsEnv?.find((el) => el.slug === slug); if (env) setSelectedEnv(env); + const query: Record = { ...router.query, env: slug }; + delete query.folderId; router.push({ pathname: router.pathname, - query: { ...router.query, env: slug } + query }); }; @@ -517,11 +519,13 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { const folderList = isRollbackMode ? snapshotSecret?.folders : folderData?.folders; // when using snapshot mode and snapshot is loading and snapshot list is empty + const isFoldersEmpty = !isFolderListLoading && !folderList?.length; const isSnapshotSecretEmtpy = isRollbackMode && !isSnapshotSecretsLoading && !snapshotSecret?.secrets?.length; const isSecretEmpty = (!isRollbackMode && isDashboardSecretEmpty) || isSnapshotSecretEmtpy; + const isEmptyPage = isFoldersEmpty && isSecretEmpty; - if (isSecretsLoading || isEnvListLoading || isFolderListLoading) { + if (isSecretsLoading || isEnvListLoading) { return (
loading animation @@ -723,11 +727,11 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => {
- {!isSecretEmpty && ( + {!isEmptyPage && ( @@ -793,7 +797,7 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { onEnvCompare={(key) => handlePopUpOpen('compareSecrets', key)} />