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
+12 -12
View File
@@ -767,7 +767,7 @@ export const updateSecretHelper = async ({
workspaceId: new Types.ObjectId(workspaceId) workspaceId: new Types.ObjectId(workspaceId)
}); });
const secretBlindIndex = await generateSecretBlindIndexWithSaltHelper({ const oldSecretBlindIndex = await generateSecretBlindIndexWithSaltHelper({
secretName, secretName,
salt salt
}); });
@@ -778,7 +778,7 @@ export const updateSecretHelper = async ({
let newSecretNameBlindIndex = undefined; let newSecretNameBlindIndex = undefined;
if (newSecretName) { if (newSecretName) {
newSecretNameBlindIndex = await generateSecretBlindIndexWithSaltHelper({ newSecretNameBlindIndex = await generateSecretBlindIndexWithSaltHelper({
secretName, secretName: newSecretName,
salt salt
}); });
const doesSecretAlreadyExist = await Secret.exists({ const doesSecretAlreadyExist = await Secret.exists({
@@ -788,15 +788,17 @@ export const updateSecretHelper = async ({
folder: folderId, folder: folderId,
type type
}); });
if (!doesSecretAlreadyExist)
if (doesSecretAlreadyExist) {
throw BadRequestError({ message: "Secret with the provided name already exist" }); throw BadRequestError({ message: "Secret with the provided name already exist" });
}
} }
if (type === SECRET_SHARED) { if (type === SECRET_SHARED) {
// case: update shared secret // case: update shared secret
secret = await Secret.findOneAndUpdate( secret = await Secret.findOneAndUpdate(
{ {
secretBlindIndex, secretBlindIndex: oldSecretBlindIndex,
workspace: new Types.ObjectId(workspaceId), workspace: new Types.ObjectId(workspaceId),
environment, environment,
folder: folderId, folder: folderId,
@@ -826,13 +828,10 @@ export const updateSecretHelper = async ({
secret = await Secret.findOneAndUpdate( secret = await Secret.findOneAndUpdate(
{ {
secretBlindIndex, secretBlindIndex: oldSecretBlindIndex,
workspace: new Types.ObjectId(workspaceId), workspace: new Types.ObjectId(workspaceId),
environment, environment,
type, type,
secretKeyIV,
secretKeyTag,
secretKeyCiphertext,
folder: folderId, folder: folderId,
...getAuthDataPayloadUserObj(authData) ...getAuthDataPayloadUserObj(authData)
}, },
@@ -840,13 +839,13 @@ export const updateSecretHelper = async ({
secretValueCiphertext, secretValueCiphertext,
secretValueIV, secretValueIV,
secretValueTag, secretValueTag,
secretKeyIV,
secretKeyTag,
secretKeyCiphertext,
tags, tags,
skipMultilineEncoding, skipMultilineEncoding,
secretBlindIndex: newSecretNameBlindIndex, secretBlindIndex: newSecretNameBlindIndex,
$inc: { version: 1 } $inc: { version: 1 }
},
{
new: true
} }
); );
} }
@@ -863,7 +862,7 @@ export const updateSecretHelper = async ({
...(type === SECRET_PERSONAL ? getAuthDataPayloadUserObj(authData) : {}), ...(type === SECRET_PERSONAL ? getAuthDataPayloadUserObj(authData) : {}),
environment: secret.environment, environment: secret.environment,
isDeleted: false, isDeleted: false,
secretBlindIndex: newSecretName ? newSecretNameBlindIndex : secretBlindIndex, secretBlindIndex: newSecretName ? newSecretNameBlindIndex : oldSecretBlindIndex,
secretKeyCiphertext: secret.secretKeyCiphertext, secretKeyCiphertext: secret.secretKeyCiphertext,
secretKeyIV: secret.secretKeyIV, secretKeyIV: secret.secretKeyIV,
secretKeyTag: secret.secretKeyTag, secretKeyTag: secret.secretKeyTag,
@@ -1154,6 +1153,7 @@ const recursivelyExpandSecret = async (
let interpolatedValue = interpolatedSec[key]; let interpolatedValue = interpolatedSec[key];
if (!interpolatedValue) { if (!interpolatedValue) {
// eslint-disable-next-line no-console
console.error(`Couldn't find referenced value - ${key}`); console.error(`Couldn't find referenced value - ${key}`);
return ""; return "";
} }
@@ -210,6 +210,7 @@ export const SecretItem = memo(
isReadOnly={isReadOnly} isReadOnly={isReadOnly}
autoCapitalization={currentWorkspace?.autoCapitalization} autoCapitalization={currentWorkspace?.autoCapitalization}
variant="plain" variant="plain"
isDisabled={isOverriden}
{...field} {...field}
className="w-full focus:text-bunker-100 focus:ring-transparent px-0" className="w-full focus:text-bunker-100 focus:ring-transparent px-0"
/> />
@@ -9,10 +9,9 @@ import { usePopUp } from "@app/hooks";
import { useCreateSecretV3, useDeleteSecretV3, useUpdateSecretV3 } from "@app/hooks/api"; import { useCreateSecretV3, useDeleteSecretV3, useUpdateSecretV3 } from "@app/hooks/api";
import { secretKeys } from "@app/hooks/api/secrets/queries"; import { secretKeys } from "@app/hooks/api/secrets/queries";
import { DecryptedSecret } from "@app/hooks/api/secrets/types"; 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 { UserWsKeyPair, WsTag } from "@app/hooks/api/types";
import { secretSnapshotKeys } from "~/hooks/api/secretSnapshots/queries";
import { useSelectedSecretActions, useSelectedSecrets } from "../../SecretMainPage.store"; import { useSelectedSecretActions, useSelectedSecrets } from "../../SecretMainPage.store";
import { Filter, GroupBy, SortDir } from "../../SecretMainPage.types"; import { Filter, GroupBy, SortDir } from "../../SecretMainPage.types";
import { SecretDetailSidebar } from "./SecretDetaiSidebar"; import { SecretDetailSidebar } from "./SecretDetaiSidebar";
@@ -194,19 +193,8 @@ export const SecretListView = ({
) && isSameTags; ) && isSameTags;
try { 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 // shared secret change
if (!isSharedSecUnchanged) if (!isSharedSecUnchanged) {
await handleSecretOperation("update", "shared", oldKey, { await handleSecretOperation("update", "shared", oldKey, {
value, value,
tags: tagIds, tags: tagIds,
@@ -214,6 +202,20 @@ export const SecretListView = ({
newKey: hasKeyChanged ? key : undefined, newKey: hasKeyChanged ? key : undefined,
skipMultilineEncoding: modSecret.skipMultilineEncoding 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( queryClient.invalidateQueries(
secretKeys.getProjectSecret({ workspaceId, environment, secretPath }) secretKeys.getProjectSecret({ workspaceId, environment, secretPath })