UNPKG

@keycloakify/keycloak-admin-ui

Version:
60 lines 4.04 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { FormSubmitButton, SelectControl } from "../ui-shared"; import { Button, ButtonVariant, Form, Modal, ModalVariant, } from "@patternfly/react-core"; import { useEffect } from "react"; import { FormProvider, useForm, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../admin-client"; import { DefaultSwitchControl } from "../components/SwitchControl"; import { useAlerts } from "../ui-shared"; import { convertAttributeNameToForm, convertFormValuesToObject, convertToFormValues, } from "../util"; import { IdentityProviderSelect } from "../organizations/IdentityProviderSelect"; export const LinkIdentityProviderModal = ({ orgId, identityProvider, onClose, }) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const form = useForm({ mode: "onChange" }); const { handleSubmit, formState, setValue } = form; const { getValues } = useFormContext(); useEffect(() => convertToFormValues({ ...identityProvider, alias: [identityProvider === null || identityProvider === void 0 ? void 0 : identityProvider.alias], hideOnLogin: identityProvider === null || identityProvider === void 0 ? void 0 : identityProvider.hideOnLogin, }, setValue), []); const submitForm = async (data) => { try { const foundIdentityProvider = await adminClient.identityProviders.findOne({ alias: data.alias[0], }); if (!foundIdentityProvider) { throw new Error(t("notFound")); } const { config } = convertFormValuesToObject(data); foundIdentityProvider.config = { ...foundIdentityProvider.config, ...config, }; foundIdentityProvider.hideOnLogin = data.hideOnLogin; await adminClient.identityProviders.update({ alias: data.alias[0] }, foundIdentityProvider); if (!identityProvider) { await adminClient.organizations.linkIdp({ orgId, alias: data.alias[0], }); } addAlert(t(!identityProvider ? "linkSuccessful" : "linkUpdatedSuccessful")); onClose(); } catch (error) { addError(!identityProvider ? "linkError" : "linkUpdatedError", error); } }; return (_jsx(Modal, { variant: ModalVariant.small, title: t("linkIdentityProvider"), isOpen: true, onClose: onClose, actions: [ _jsx(FormSubmitButton, { formState: formState, "data-testid": "confirm", form: "form", allowInvalid: true, allowNonDirty: true, children: t("save") }, "confirm"), _jsx(Button, { id: "modal-cancel", "data-testid": "cancel", variant: ButtonVariant.link, onClick: onClose, children: t("cancel") }, "cancel"), ], children: _jsx(FormProvider, { ...form, children: _jsxs(Form, { id: "form", onSubmit: handleSubmit(submitForm), children: [_jsx(IdentityProviderSelect, { name: "alias", label: t("identityProvider"), defaultValue: [], isRequired: true, isDisabled: !!identityProvider }), _jsx(SelectControl, { name: convertAttributeNameToForm("config.kc.org.domain"), label: t("domain"), controller: { defaultValue: "" }, options: [ { key: "", value: t("none") }, ...getValues("domains").map((d) => ({ key: d, value: d })), ], menuAppendTo: "parent" }), _jsx(DefaultSwitchControl, { name: "hideOnLogin", label: t("hideOnLoginPage"), labelIcon: t("hideOnLoginPageHelp"), defaultValue: true }), _jsx(DefaultSwitchControl, { name: convertAttributeNameToForm("config.kc.org.broker.redirect.mode.email-matches"), label: t("redirectWhenEmailMatches"), labelIcon: t("redirectWhenEmailMatchesHelp"), stringify: true })] }) }) })); }; //# sourceMappingURL=LinkIdentityProviderModal.js.map