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