From 05d7e26f8b1ffa8b446cbf23803be1ea5131a0ce Mon Sep 17 00:00:00 2001
From: Sheen Capadngan
Date: Wed, 24 Jul 2024 23:45:38 +0800
Subject: [PATCH] misc: addressed minor kms issues
---
frontend/src/hooks/api/kms/mutations.tsx | 4 ++-
frontend/src/hooks/api/kms/types.ts | 2 +-
.../OrgEncryptionTab/AwsKmsForm.tsx | 2 +-
.../EncryptionTab/EncryptionTab.tsx | 34 +++++++++++++++----
4 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/frontend/src/hooks/api/kms/mutations.tsx b/frontend/src/hooks/api/kms/mutations.tsx
index c15ddd1d0..8b5752374 100644
--- a/frontend/src/hooks/api/kms/mutations.tsx
+++ b/frontend/src/hooks/api/kms/mutations.tsx
@@ -69,7 +69,9 @@ export const useUpdateProjectKms = (projectId: string) => {
mutationFn: async (
updatedData: { type: KmsType.Internal } | { type: KmsType.External; kmsId: string }
) => {
- const { data } = await apiRequest.patch(`/api/v1/workspace/${projectId}/kms`, updatedData);
+ const { data } = await apiRequest.patch(`/api/v1/workspace/${projectId}/kms`, {
+ kms: updatedData
+ });
return data;
},
diff --git a/frontend/src/hooks/api/kms/types.ts b/frontend/src/hooks/api/kms/types.ts
index 7b726e6d3..6a41719c4 100644
--- a/frontend/src/hooks/api/kms/types.ts
+++ b/frontend/src/hooks/api/kms/types.ts
@@ -95,7 +95,7 @@ export const AddExternalKmsSchema = z.object({
.refine((v) => slugify(v) === v, {
message: "Alias must be a valid slug"
}),
- description: z.string().trim().min(1).optional(),
+ description: z.string().trim().optional(),
provider: ExternalKmsInputSchema
});
diff --git a/frontend/src/views/Settings/OrgSettingsPage/components/OrgEncryptionTab/AwsKmsForm.tsx b/frontend/src/views/Settings/OrgSettingsPage/components/OrgEncryptionTab/AwsKmsForm.tsx
index 6bafbd909..aef80cbce 100644
--- a/frontend/src/views/Settings/OrgSettingsPage/components/OrgEncryptionTab/AwsKmsForm.tsx
+++ b/frontend/src/views/Settings/OrgSettingsPage/components/OrgEncryptionTab/AwsKmsForm.tsx
@@ -62,7 +62,7 @@ export const AwsKmsForm = ({ onCompleted, onCancel, kms }: Props) => {
resolver: zodResolver(AddExternalKmsSchema),
defaultValues: {
slug: kms?.slug,
- description: kms?.description,
+ description: kms?.description ?? "",
provider: {
type: ExternalKmsProvider.AWS,
inputs: {
diff --git a/frontend/src/views/Settings/ProjectSettingsPage/components/EncryptionTab/EncryptionTab.tsx b/frontend/src/views/Settings/ProjectSettingsPage/components/EncryptionTab/EncryptionTab.tsx
index b32111792..13d86f42c 100644
--- a/frontend/src/views/Settings/ProjectSettingsPage/components/EncryptionTab/EncryptionTab.tsx
+++ b/frontend/src/views/Settings/ProjectSettingsPage/components/EncryptionTab/EncryptionTab.tsx
@@ -23,7 +23,7 @@ import {
useOrganization,
useWorkspace
} from "@app/context";
-import { usePopUp } from "@app/hooks";
+import { usePopUp, useToggle } from "@app/hooks";
import {
useGetActiveProjectKms,
useGetExternalKmsList,
@@ -51,18 +51,36 @@ const BackupConfirmationModal = ({
org?: Organization;
workspace?: Workspace;
}) => {
+ const [isGeneratingBackup, setGeneratingBackup] = useToggle();
const downloadKmsBackup = async () => {
if (!workspace || !org) {
return;
}
- const { secretManager } = await fetchProjectKmsBackup(workspace.id);
+ setGeneratingBackup.on();
- const [, , kmsFunction] = secretManager.split(".");
- const file = secretManager;
+ try {
+ const { secretManager } = await fetchProjectKmsBackup(workspace.id);
- const blob = new Blob([file], { type: "text/plain;charset=utf-8" });
- FileSaver.saveAs(blob, `kms-backup-${org.slug}-${workspace.slug}-${kmsFunction}.infisical.txt`);
+ const [, , kmsFunction] = secretManager.split(".");
+ const file = secretManager;
+
+ const blob = new Blob([file], { type: "text/plain;charset=utf-8" });
+ FileSaver.saveAs(
+ blob,
+ `kms-backup-${org.slug}-${workspace.slug}-${kmsFunction}.infisical.txt`
+ );
+
+ onOpenChange(false);
+ } catch (err) {
+ console.error(err);
+ createNotification({
+ text: "Failed to create KMS backup",
+ type: "error"
+ });
+ }
+
+ setGeneratingBackup.off();
};
return (
@@ -72,7 +90,9 @@ const BackupConfirmationModal = ({
In case of interruptions with your configured external KMS, you can load a backup to set
the project's KMS back to the default Infisical KMS.
-
+