diff --git a/ui/src/app/certificate_requests/components.tsx b/ui/src/app/certificate_requests/components.tsx index 5e1cf30..728f7fd 100644 --- a/ui/src/app/certificate_requests/components.tsx +++ b/ui/src/app/certificate_requests/components.tsx @@ -1,5 +1,8 @@ -import { Dispatch, SetStateAction, useState } from "react" +import { Dispatch, SetStateAction, useState, ChangeEvent } from "react" +import { useMutation, useQueryClient } from "react-query" import { ConfirmationModalData } from "./row" +import { extractCert } from "../utils" +import { postCertToID } from "../queries" interface ConfirmationModalProps { modalData: ConfirmationModalData @@ -28,6 +31,86 @@ export function ConfirmationModal({ modalData, setModalData }: ConfirmationModal ) } +function SubmitCertificate({ certText, onClickFunc }: { certText: string, onClickFunc: any }) { + let certIsValid = false + try { + extractCert(certText.trim()) + //TODO: compare public keys here too + certIsValid = true + } + catch { } + + const validationComponent = certText == "" ? <> : certIsValid ?
Valid Certificate
:
Invalid Certificate
+ const buttonComponent = certIsValid ? : + return ( + <> + {validationComponent} + {buttonComponent} + + ) +} + +interface SubmitCertificateModalProps { + id: string + setFormOpen: Dispatch> +} +export function SubmitCertificateModal({ id, setFormOpen }: SubmitCertificateModalProps) { + const queryClient = useQueryClient() + const mutation = useMutation(postCertToID(id), { + onSuccess: () => { + queryClient.invalidateQueries('csrs') + }, + }) + const [certificatePEMString, setCertificatePEMString] = useState("") + const handleTextChange = (event: ChangeEvent) => { + setCertificatePEMString(event.target.value); + } + const handleFileChange = (event: ChangeEvent) => { + const file = event.target.files?.[0] + if (file) { + const reader = new FileReader(); + reader.onload = (e: ProgressEvent) => { + if (e.target) { + if (e.target.result) { + setCertificatePEMString(e.target.result.toString()); + } + } + }; + reader.readAsText(file); + } + }; + const handleSubmit = () => { + mutation.mutate(certificatePEMString) + setFormOpen(false) + } + return ( +