mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 20:27:12 +00:00
bug fixes for v3 secret apis
This commit is contained in:
@@ -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 })
|
||||||
|
|||||||
Reference in New Issue
Block a user