UNPKG

@keycloakify/keycloak-admin-ui

Version:
43 lines 2.56 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; 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 { useAdminClient } from "../admin-client"; import { useAlerts } from "../ui-shared"; export const UserIdpModal = ({ userId, federatedId, onClose, onRefresh, }) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const form = useForm({ mode: "onChange", }); const { handleSubmit, formState: { isValid }, } = form; const onSubmit = async (federatedIdentity) => { try { await adminClient.users.addToFederatedIdentity({ id: userId, federatedIdentityId: federatedId, federatedIdentity, }); addAlert(t("idpLinkSuccess"), AlertVariant.success); onClose(); onRefresh(); } catch (error) { addError("couldNotLinkIdP", error); } }; return (_jsx(Modal, { variant: ModalVariant.small, title: t("linkAccountTitle", { provider: capitalize(federatedId), }), onClose: onClose, actions: [ _jsx(Button, { "data-testid": "confirm", variant: "primary", type: "submit", form: "group-form", isDisabled: !isValid, children: t("link") }, "confirm"), _jsx(Button, { "data-testid": "cancel", variant: ButtonVariant.link, onClick: onClose, children: t("cancel") }, "cancel"), ], isOpen: true, children: _jsx(Form, { id: "group-form", onSubmit: handleSubmit(onSubmit), children: _jsxs(FormProvider, { ...form, children: [_jsx(FormGroup, { label: t("identityProvider"), fieldId: "identityProvider", children: _jsx(TextInput, { id: "identityProvider", "data-testid": "idpNameInput", value: capitalize(federatedId), readOnly: true }) }), _jsx(TextControl, { name: "userId", label: t("userID"), helperText: t("userIdHelperText"), autoFocus: true, rules: { required: t("required"), } }), _jsx(TextControl, { name: "userName", label: t("username"), helperText: t("usernameHelperText"), rules: { required: t("required"), } })] }) }) })); }; //# sourceMappingURL=UserIdPModal.js.map