@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
60 lines • 4.04 kB
JavaScript
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