@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
59 lines • 4.15 kB
JavaScript
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
import { HelpItem, useAlerts, useFetch } from "../../ui-shared";
import { AlertVariant, Button, Divider, FormGroup, PageSection, Radio, } from "@patternfly/react-core";
import { useState } from "react";
import { Controller, FormProvider, useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { useAdminClient } from "../../admin-client";
import { FixedButtonsGroup } from "../../components/form/FixedButtonGroup";
import { FormAccess } from "../../components/form/FormAccess";
import { KeycloakSpinner } from "../../ui-shared";
import { DefaultSwitchControl } from "../../components/SwitchControl";
import { useAccess } from "../../context/access/Access";
import useToggle from "../../utils/useToggle";
import { DecisionStrategySelect } from "../../clients/authorization/DecisionStrategySelect";
import { ImportDialog } from "../../clients/authorization/ImportDialog";
const POLICY_ENFORCEMENT_MODES = [
"ENFORCING",
"PERMISSIVE",
"DISABLED",
];
export const AuthorizationSettings = ({ clientId }) => {
const { adminClient } = useAdminClient();
const { t } = useTranslation();
const [resource, setResource] = useState();
const [importDialog, toggleImportDialog] = useToggle();
const form = useForm({});
const { control, reset, handleSubmit } = form;
const { addAlert, addError } = useAlerts();
const { hasAccess } = useAccess();
const isDisabled = !hasAccess("manage-authorization");
useFetch(() => adminClient.clients.getResourceServer({ id: clientId }), (resource) => {
setResource(resource);
reset(resource);
}, []);
const importResource = async (value) => {
try {
await adminClient.clients.importResource({ id: clientId }, value);
addAlert(t("importResourceSuccess"), AlertVariant.success);
reset({ ...value });
}
catch (error) {
addError("importResourceError", error);
}
};
const onSubmit = async (resource) => {
try {
await adminClient.clients.updateResourceServer({ id: clientId }, resource);
addAlert(t("updateResourceSuccess"), AlertVariant.success);
}
catch (error) {
addError("resourceSaveError", error);
}
};
if (!resource) {
return _jsx(KeycloakSpinner, {});
}
return (_jsxs(PageSection, { variant: "light", children: [importDialog && (_jsx(ImportDialog, { onConfirm: importResource, closeDialog: toggleImportDialog })), _jsxs(FormAccess, { role: "manage-authorization", isHorizontal: true, onSubmit: handleSubmit(onSubmit), children: [_jsx(FormGroup, { label: t("import"), fieldId: "import", labelIcon: _jsx(HelpItem, { helpText: t("importHelp"), fieldLabelId: "import" }), children: _jsx(Button, { variant: "secondary", onClick: toggleImportDialog, children: t("import") }) }), _jsx(Divider, {}), _jsx(FormGroup, { label: t("policyEnforcementMode"), labelIcon: _jsx(HelpItem, { helpText: t("policyEnforcementModeHelp"), fieldLabelId: "policyEnforcementMode" }), fieldId: "policyEnforcementMode", hasNoPaddingTop: true, children: _jsx(Controller, { name: "policyEnforcementMode", "data-testid": "policyEnforcementMode", defaultValue: POLICY_ENFORCEMENT_MODES[0], control: control, render: ({ field }) => (_jsx(_Fragment, { children: POLICY_ENFORCEMENT_MODES.map((mode) => (_jsx(Radio, { id: mode, "data-testid": mode, isChecked: field.value === mode, isDisabled: isDisabled, name: "policyEnforcementMode", onChange: () => field.onChange(mode), label: t(`policyEnforcementModes.${mode}`), className: "pf-v5-u-mb-md" }, mode))) })) }) }), _jsxs(FormProvider, { ...form, children: [_jsx(DecisionStrategySelect, { isLimited: true }), _jsx(DefaultSwitchControl, { name: "allowRemoteResourceManagement", label: t("allowRemoteResourceManagement"), labelIcon: t("allowRemoteResourceManagementHelp") })] }), _jsx(FixedButtonsGroup, { name: "authenticationSettings", reset: () => reset(resource), isSubmit: true })] })] }));
};
//# sourceMappingURL=Settings.js.map