import { useEffect } from "react"; import { Controller, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import z from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, FormControl, Input, Modal, ModalContent, Select, SelectItem, Switch, TextArea } from "@app/components/v2"; import { useToggle } from "@app/hooks"; import { useCreateEstConfig, useGetEstConfig, useUpdateEstConfig } from "@app/hooks/api"; import { UsePopUpState } from "@app/hooks/usePopUp"; enum EnrollmentMethod { EST = "est" } type Props = { popUp: UsePopUpState<["enrollmentOptions"]>; handlePopUpToggle: ( popUpName: keyof UsePopUpState<["enrollmentOptions"]>, state?: boolean ) => void; }; const schema = z.object({ method: z.nativeEnum(EnrollmentMethod), caChain: z.string().optional(), passphrase: z.string().optional(), isEnabled: z.boolean(), disableBootstrapCertValidation: z.boolean().optional().default(false) }); export type FormData = z.infer; export const CertificateTemplateEnrollmentModal = ({ popUp, handlePopUpToggle }: Props) => { const popUpData = popUp?.enrollmentOptions?.data as { id: string; }; const certificateTemplateId = popUpData?.id; const { data } = useGetEstConfig(certificateTemplateId); const { control, handleSubmit, reset, setError, watch, setValue, formState: { isSubmitting } } = useForm({ resolver: zodResolver(schema) }); const { mutateAsync: createEstConfig } = useCreateEstConfig(); const { mutateAsync: updateEstConfig } = useUpdateEstConfig(); const [isPassphraseFocused, setIsPassphraseFocused] = useToggle(false); const disableBootstrapCertValidation = watch("disableBootstrapCertValidation"); useEffect(() => { if (disableBootstrapCertValidation) { setValue("caChain", ""); } }, [disableBootstrapCertValidation]); useEffect(() => { if (data) { reset({ method: EnrollmentMethod.EST, caChain: data.caChain, isEnabled: data.isEnabled, disableBootstrapCertValidation: data.disableBootstrapCertValidation }); } else { reset({ caChain: "", isEnabled: false, disableBootstrapCertValidation: false }); } }, [data]); const onFormSubmit = async ({ caChain, passphrase, isEnabled }: FormData) => { try { if (data) { await updateEstConfig({ certificateTemplateId, caChain, passphrase, isEnabled, disableBootstrapCertValidation }); } else { if (!passphrase) { setError("passphrase", { message: "Passphrase is required to setup EST" }); return; } await createEstConfig({ certificateTemplateId, caChain, passphrase, isEnabled, disableBootstrapCertValidation }); } handlePopUpToggle("enrollmentOptions", false); createNotification({ text: "Successfully saved changes", type: "success" }); reset(); } catch (err) { console.error(err); } }; return ( { handlePopUpToggle("enrollmentOptions", isOpen); reset(); }} >
( )} /> {data && ( )} { return ( field.onChange(value)} isChecked={field.value} >

Disable Bootstrap Certificate Validation

); }} /> {!disableBootstrapCertValidation && ( (