diff --git a/backend/src/server/routes/v1/dashboard-router.ts b/backend/src/server/routes/v1/dashboard-router.ts
index 846e25eb8..8db2f112c 100644
--- a/backend/src/server/routes/v1/dashboard-router.ts
+++ b/backend/src/server/routes/v1/dashboard-router.ts
@@ -154,7 +154,8 @@ export const registerDashboardRouter = async (server: FastifyZodProvider) => {
secrets: z
.object({
secretId: z.string(),
- referencedSecretKey: z.string()
+ referencedSecretKey: z.string(),
+ referencedSecretId: z.string()
})
.array()
.optional()
@@ -650,7 +651,8 @@ export const registerDashboardRouter = async (server: FastifyZodProvider) => {
secrets: z
.object({
secretId: z.string(),
- referencedSecretKey: z.string()
+ referencedSecretKey: z.string(),
+ referencedSecretId: z.string()
})
.array()
.optional()
diff --git a/backend/src/services/secret-import/secret-import-dal.ts b/backend/src/services/secret-import/secret-import-dal.ts
index 1a171aa2e..7ea276268 100644
--- a/backend/src/services/secret-import/secret-import-dal.ts
+++ b/backend/src/services/secret-import/secret-import-dal.ts
@@ -203,7 +203,8 @@ export const secretImportDALFactory = (db: TDbClient) => {
db.ref("name").withSchema(TableName.Environment).as("envName"),
db.ref("slug").withSchema(TableName.Environment).as("envSlug"),
db.ref("id").withSchema(TableName.SecretFolder).as("folderId"),
- db.ref("secretKey").withSchema(TableName.SecretReferenceV2).as("referencedSecretKey")
+ db.ref("secretKey").withSchema(TableName.SecretReferenceV2).as("referencedSecretKey"),
+ db.ref("id").withSchema(TableName.SecretV2).as("referencedSecretId")
);
const folderResults = folderImports.map(({ envName, envSlug, folderName, folderId }) => ({
@@ -214,13 +215,14 @@ export const secretImportDALFactory = (db: TDbClient) => {
}));
const secretResults = secretReferences.map(
- ({ envName, envSlug, secretId, folderName, folderId, referencedSecretKey }) => ({
+ ({ envName, envSlug, secretId, folderName, folderId, referencedSecretKey, referencedSecretId }) => ({
envName,
envSlug,
secretId,
folderName,
folderId,
- referencedSecretKey
+ referencedSecretKey,
+ referencedSecretId
})
);
@@ -235,6 +237,7 @@ export const secretImportDALFactory = (db: TDbClient) => {
secrets: {
secretId: string;
referencedSecretKey: string;
+ referencedSecretId: string;
}[];
folderId: string;
folderImported: boolean;
@@ -264,7 +267,11 @@ export const secretImportDALFactory = (db: TDbClient) => {
if ("secretId" in item && item.secretId) {
updatedAcc[env].folders[folder].secrets = [
...updatedAcc[env].folders[folder].secrets,
- { secretId: item.secretId, referencedSecretKey: item.referencedSecretKey }
+ {
+ secretId: item.secretId,
+ referencedSecretKey: item.referencedSecretKey,
+ referencedSecretId: item.referencedSecretId
+ }
];
} else {
updatedAcc[env].folders[folder].folderImported = true;
diff --git a/backend/src/services/secret-import/secret-import-service.ts b/backend/src/services/secret-import/secret-import-service.ts
index 2015516f5..998d8682a 100644
--- a/backend/src/services/secret-import/secret-import-service.ts
+++ b/backend/src/services/secret-import/secret-import-service.ts
@@ -808,7 +808,7 @@ export const secretImportServiceFactory = ({
actorOrgId,
secrets
}: TGetSecretImportsDTO & {
- secrets: { secretKey: string; secretValue: string }[] | undefined;
+ secrets: { secretKey: string; secretValue: string; id: string }[] | undefined;
}) => {
const { permission } = await permissionService.getProjectPermission({
actor,
@@ -877,7 +877,8 @@ export const secretImportServiceFactory = ({
)
.map((otherSecret) => ({
secretId: secret.secretKey,
- referencedSecretKey: otherSecret.secretKey
+ referencedSecretKey: otherSecret.secretKey,
+ referencedSecretId: otherSecret.id
}));
}) || [];
if (locallyReferenced.length > 0) {
diff --git a/backend/src/services/secret-import/secret-import-types.ts b/backend/src/services/secret-import/secret-import-types.ts
index e4490e715..407372267 100644
--- a/backend/src/services/secret-import/secret-import-types.ts
+++ b/backend/src/services/secret-import/secret-import-types.ts
@@ -56,11 +56,12 @@ export type FolderResult = {
export type SecretResult = {
secretId: string;
referencedSecretKey: string;
+ referencedSecretId: string;
} & FolderResult;
export type FolderInfo = {
folderName: string;
- secrets?: { secretId: string; referencedSecretKey: string }[];
+ secrets?: { secretId: string; referencedSecretKey: string; referencedSecretId: string }[];
folderId: string;
folderImported: boolean;
envSlug?: string;
diff --git a/frontend/src/components/v2/DeleteActionModal/DeleteActionModal.tsx b/frontend/src/components/v2/DeleteActionModal/DeleteActionModal.tsx
index a2b69eaba..0b0dab278 100644
--- a/frontend/src/components/v2/DeleteActionModal/DeleteActionModal.tsx
+++ b/frontend/src/components/v2/DeleteActionModal/DeleteActionModal.tsx
@@ -19,6 +19,7 @@ type Props = {
formContent?: ReactNode;
children?: ReactNode;
deletionMessage?: ReactNode;
+ buttonColorSchema?: "danger" | "primary" | "secondary" | "gray" | null;
};
export const DeleteActionModal = ({
@@ -32,6 +33,7 @@ export const DeleteActionModal = ({
buttonText = "Delete",
formContent,
deletionMessage,
+ buttonColorSchema,
children
}: Props): JSX.Element => {
const [inputData, setInputData] = useState("");
@@ -67,7 +69,7 @@ export const DeleteActionModal = ({
+ handlePopUpToggle("editSecret", isOpen)}
+ onDeleteApproved={() => handleEditSecret(popUp?.editSecret?.data)}
+ formContent={
+ importedBy &&
+ importedBy.length > 0 && (
+
+ )
+ }
+ />
);
}
diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretListView.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretListView.tsx
index a08c2aa18..e991e9109 100644
--- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretListView.tsx
+++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretListView.tsx
@@ -34,7 +34,7 @@ type Props = {
environment: { name: string; slug: string };
folders: {
name: string;
- secrets?: { secretId: string; referencedSecretKey: string }[];
+ secrets?: { secretId: string; referencedSecretKey: string; referencedSecretId: string }[];
isImported: boolean;
}[];
}[];
@@ -354,6 +354,7 @@ export const SecretListView = ({
onSaveSecret={handleSaveSecret}
onDeleteSecret={onDeleteSecret}
onDetailViewSecret={onDetailViewSecret}
+ importedBy={importedBy}
onCreateTag={onCreateTag}
handleSecretShare={() =>
handlePopUpOpen("createSharedSecret", {