import type FederatedIdentityRepresentation from "@keycloak/keycloak-admin-client/lib/defs/federatedIdentityRepresentation"; import { AlertVariant, Button, ButtonVariant, Form, FormGroup, Modal, ModalVariant, TextInput, } from "@patternfly/react-core"; import { capitalize } from "lodash-es"; import { FormProvider, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { TextControl } from "ui-shared"; import { adminClient } from "../admin-client"; import { useAlerts } from "../components/alert/Alerts"; type UserIdpModalProps = { userId: string; federatedId: string; onClose: () => void; onRefresh: () => void; }; export const UserIdpModal = ({ userId, federatedId, onClose, onRefresh, }: UserIdpModalProps) => { const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const form = useForm({ mode: "onChange", }); const { handleSubmit, formState: { isValid }, } = form; const onSubmit = async ( federatedIdentity: FederatedIdentityRepresentation, ) => { try { await adminClient.users.addToFederatedIdentity({ id: userId, federatedIdentityId: federatedId, federatedIdentity, }); addAlert(t("idpLinkSuccess"), AlertVariant.success); onClose(); onRefresh(); } catch (error) { addError("couldNotLinkIdP", error); } }; return ( {t("link")} , , ]} isOpen >
); };