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.

- +