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