/* eslint-disable */ // @ts-nocheck import type KeyStoreConfig from "@keycloak/keycloak-admin-client/lib/defs/keystoreConfig"; import { HelpItem, NumberControl, SelectControl, FileUploadControl, } from "../../../shared/keycloak-ui-shared"; import { Button, ButtonVariant, Form, Modal, ModalVariant, Text, TextContent, } from "../../../shared/@patternfly/react-core"; import { FormProvider, useForm, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { StoreSettings } from "./StoreSettings"; type GenerateKeyDialogProps = { clientId: string; toggleDialog: () => void; save: (keyStoreConfig: KeyStoreConfig) => void; }; type KeyFormProps = { useFile?: boolean; isSaml?: boolean; hasPem?: boolean; }; const CERT_PEM = "Certificate PEM" as const; const extensions = new Map([ ["PKCS12", "p12"], ["JKS", "jks"], ["BCFKS", "bcfks"], ]); type FormFields = KeyStoreConfig & { file: string | File; }; export const getFileExtension = (format: string) => extensions.get(format); export const KeyForm = ({ isSaml = false, hasPem = false, useFile = false, }: KeyFormProps) => { const { t } = useTranslation(); const { watch } = useFormContext(); const format = watch("format"); const { cryptoInfo } = useServerInfo(); const supportedKeystoreTypes = [ ...(cryptoInfo?.supportedKeystoreTypes ?? []), ...(hasPem ? [CERT_PEM] : []), ]; const keySizes = ["4096", "3072", "2048"]; return (
{useFile && ( } rules={{ required: t("required"), }} name="file" id="importFile" /> )} {format !== CERT_PEM && ( )} {!useFile && ( <> )} ); }; export const GenerateKeyDialog = ({ clientId, save, toggleDialog, }: GenerateKeyDialogProps) => { const { t } = useTranslation(); const form = useForm({ defaultValues: { keyAlias: clientId }, mode: "onChange", }); const { handleSubmit, formState: { isValid }, } = form; return ( { await handleSubmit((config) => { save(config); toggleDialog(); })(); }} > {t("generate")} , , ]} > {t("generateKeysDescription")} ); };