fix(folders): fixed algorithm missing in rollback versions and resolved env change reset folderid

This commit is contained in:
akhilmhdh
2023-05-30 20:20:29 +05:30
parent 467e85b717
commit 6ce0f48b2c
5 changed files with 35 additions and 18 deletions

View File

@@ -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,
});
}

View File

@@ -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" });

View File

@@ -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(

View File

@@ -99,11 +99,13 @@ const secretVersionSchema = new Schema<ISecretVersion>(
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,

View File

@@ -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<string, string> = { ...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 (
<div className="container mx-auto flex h-1/2 w-full items-center justify-center px-8 text-mineshaft-50 dark:[color-scheme:dark]">
<img src="/images/loading/loading.gif" height={70} width={120} alt="loading animation" />
@@ -723,11 +727,11 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => {
</div>
<div
className={`${
isSecretEmpty ? 'flex flex-col items-center justify-center' : ''
isEmptyPage ? 'flex flex-col items-center justify-center' : ''
} no-scrollbar::-webkit-scrollbar mt-3 h-3/4 overflow-x-hidden overflow-y-scroll no-scrollbar`}
ref={secretContainer}
>
{!isSecretEmpty && (
{!isEmptyPage && (
<TableContainer className="no-scrollbar::-webkit-scrollbar max-h-[calc(100%-120px)] no-scrollbar">
<table className="secret-table relative">
<SecretTableHeader sortDir={sortDir} onSort={onSortSecrets} />
@@ -793,7 +797,7 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => {
onEnvCompare={(key) => handlePopUpOpen('compareSecrets', key)}
/>
<SecretDropzone
isSmaller={!isSecretEmpty}
isSmaller={!isEmptyPage}
onParsedEnv={handleUploadedEnv}
onAddNewSecret={onAppendSecret}
/>