bug fixes for v3 secret apis

This commit is contained in:
Maidul Islam
2023-09-28 12:11:26 -07:00
parent 2610356d45
commit 3bbf770027
3 changed files with 29 additions and 26 deletions

View File

@@ -767,7 +767,7 @@ export const updateSecretHelper = async ({
workspaceId: new Types.ObjectId(workspaceId)
});
const secretBlindIndex = await generateSecretBlindIndexWithSaltHelper({
const oldSecretBlindIndex = await generateSecretBlindIndexWithSaltHelper({
secretName,
salt
});
@@ -778,7 +778,7 @@ export const updateSecretHelper = async ({
let newSecretNameBlindIndex = undefined;
if (newSecretName) {
newSecretNameBlindIndex = await generateSecretBlindIndexWithSaltHelper({
secretName,
secretName: newSecretName,
salt
});
const doesSecretAlreadyExist = await Secret.exists({
@@ -788,15 +788,17 @@ export const updateSecretHelper = async ({
folder: folderId,
type
});
if (!doesSecretAlreadyExist)
if (doesSecretAlreadyExist) {
throw BadRequestError({ message: "Secret with the provided name already exist" });
}
}
if (type === SECRET_SHARED) {
// case: update shared secret
secret = await Secret.findOneAndUpdate(
{
secretBlindIndex,
secretBlindIndex: oldSecretBlindIndex,
workspace: new Types.ObjectId(workspaceId),
environment,
folder: folderId,
@@ -826,13 +828,10 @@ export const updateSecretHelper = async ({
secret = await Secret.findOneAndUpdate(
{
secretBlindIndex,
secretBlindIndex: oldSecretBlindIndex,
workspace: new Types.ObjectId(workspaceId),
environment,
type,
secretKeyIV,
secretKeyTag,
secretKeyCiphertext,
folder: folderId,
...getAuthDataPayloadUserObj(authData)
},
@@ -840,13 +839,13 @@ export const updateSecretHelper = async ({
secretValueCiphertext,
secretValueIV,
secretValueTag,
secretKeyIV,
secretKeyTag,
secretKeyCiphertext,
tags,
skipMultilineEncoding,
secretBlindIndex: newSecretNameBlindIndex,
$inc: { version: 1 }
},
{
new: true
}
);
}
@@ -863,7 +862,7 @@ export const updateSecretHelper = async ({
...(type === SECRET_PERSONAL ? getAuthDataPayloadUserObj(authData) : {}),
environment: secret.environment,
isDeleted: false,
secretBlindIndex: newSecretName ? newSecretNameBlindIndex : secretBlindIndex,
secretBlindIndex: newSecretName ? newSecretNameBlindIndex : oldSecretBlindIndex,
secretKeyCiphertext: secret.secretKeyCiphertext,
secretKeyIV: secret.secretKeyIV,
secretKeyTag: secret.secretKeyTag,
@@ -1154,6 +1153,7 @@ const recursivelyExpandSecret = async (
let interpolatedValue = interpolatedSec[key];
if (!interpolatedValue) {
// eslint-disable-next-line no-console
console.error(`Couldn't find referenced value - ${key}`);
return "";
}

View File

@@ -210,6 +210,7 @@ export const SecretItem = memo(
isReadOnly={isReadOnly}
autoCapitalization={currentWorkspace?.autoCapitalization}
variant="plain"
isDisabled={isOverriden}
{...field}
className="w-full focus:text-bunker-100 focus:ring-transparent px-0"
/>

View File

@@ -9,10 +9,9 @@ import { usePopUp } from "@app/hooks";
import { useCreateSecretV3, useDeleteSecretV3, useUpdateSecretV3 } from "@app/hooks/api";
import { secretKeys } from "@app/hooks/api/secrets/queries";
import { DecryptedSecret } from "@app/hooks/api/secrets/types";
import { secretSnapshotKeys } from "@app/hooks/api/secretSnapshots/queries";
import { UserWsKeyPair, WsTag } from "@app/hooks/api/types";
import { secretSnapshotKeys } from "~/hooks/api/secretSnapshots/queries";
import { useSelectedSecretActions, useSelectedSecrets } from "../../SecretMainPage.store";
import { Filter, GroupBy, SortDir } from "../../SecretMainPage.types";
import { SecretDetailSidebar } from "./SecretDetaiSidebar";
@@ -194,19 +193,8 @@ export const SecretListView = ({
) && isSameTags;
try {
// personal secret change
if (overrideAction === "deleted") await handleSecretOperation("delete", "personal", key);
else if (overrideAction && idOverride)
await handleSecretOperation("update", "personal", oldKey, {
value: valueOverride,
newKey: hasKeyChanged ? key : undefined,
skipMultilineEncoding: modSecret.skipMultilineEncoding
});
else if (overrideAction)
await handleSecretOperation("create", "personal", key, { value: valueOverride });
// shared secret change
if (!isSharedSecUnchanged)
if (!isSharedSecUnchanged) {
await handleSecretOperation("update", "shared", oldKey, {
value,
tags: tagIds,
@@ -214,6 +202,20 @@ export const SecretListView = ({
newKey: hasKeyChanged ? key : undefined,
skipMultilineEncoding: modSecret.skipMultilineEncoding
});
}
// personal secret change
if (overrideAction === "deleted") {
await handleSecretOperation("delete", "personal", key);
} else if (overrideAction && idOverride){
await handleSecretOperation("update", "personal", oldKey, {
value: valueOverride,
newKey: hasKeyChanged ? key : undefined,
skipMultilineEncoding: modSecret.skipMultilineEncoding
});
} else if (overrideAction) {
await handleSecretOperation("create", "personal", key, { value: valueOverride });
}
queryClient.invalidateQueries(
secretKeys.getProjectSecret({ workspaceId, environment, secretPath })