keycloak-scim/src/user-federation/ldap/LdapSettingsAdvanced.tsx

132 lines
4.1 KiB
TypeScript
Raw Normal View History

2020-11-25 16:17:50 +00:00
import { FormGroup, Switch } from "@patternfly/react-core";
import { useTranslation } from "react-i18next";
import React, { useEffect } from "react";
import { HelpItem } from "../../components/help-enabler/HelpItem";
2020-11-25 14:50:40 +00:00
import { useForm, Controller } from "react-hook-form";
import { convertToFormValues } from "../../util";
2020-11-25 14:50:40 +00:00
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
import { FormAccess } from "../../components/form-access/FormAccess";
import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useParams } from "react-router-dom";
export const LdapSettingsAdvanced = () => {
const { t } = useTranslation("user-federation");
const helpText = useTranslation("user-federation-help").t;
const adminClient = useAdminClient();
const { control, setValue } = useForm<ComponentRepresentation>();
const { id } = useParams<{ id: string }>();
const setupForm = (component: ComponentRepresentation) => {
Object.entries(component).map((entry) => {
if (entry[0] === "config") {
convertToFormValues(entry[1], "config", setValue);
} else {
setValue(entry[0], entry[1]);
}
});
};
useEffect(() => {
return asyncStateFetch(
() => adminClient.components.findOne({ id }),
(fetchedComponent) => setupForm(fetchedComponent)
);
}, []);
2020-11-25 14:50:40 +00:00
return (
<>
2020-11-25 16:17:50 +00:00
<FormAccess role="manage-realm" isHorizontal>
<FormGroup
label={t("enableLdapv3Password")}
labelIcon={
<HelpItem
helpText={helpText("enableLdapv3PasswordHelp")}
forLabel={t("enableLdapv3Password")}
forID="kc-enable-ldapv3-password"
/>
}
fieldId="kc-enable-ldapv3-password"
hasNoPaddingTop
>
2020-11-25 14:50:40 +00:00
<Controller
name="config.usePasswordModifyExtendedOp"
2020-11-25 14:50:40 +00:00
defaultValue={false}
control={control}
render={({ onChange, value }) => (
<Switch
id={"kc-enable-ldapv3-password"}
isChecked={value[0] === "true"}
2020-11-25 14:50:40 +00:00
isDisabled={false}
onChange={onChange}
label={t("common:on")}
labelOff={t("common:off")}
/>
)}
></Controller>
</FormGroup>
<FormGroup
label={t("validatePasswordPolicy")}
labelIcon={
<HelpItem
helpText={helpText("validatePasswordPolicyHelp")}
forLabel={t("validatePasswordPolicy")}
forID="kc-validate-password-policy"
/>
}
fieldId="kc-validate-password-policy"
hasNoPaddingTop
>
2020-11-25 14:50:40 +00:00
<Controller
name="config.validatePasswordPolicy"
2020-11-25 14:50:40 +00:00
defaultValue={false}
control={control}
render={({ onChange, value }) => (
<Switch
id={"kc-validate-password-policy"}
isChecked={value[0] === "true"}
2020-11-25 14:50:40 +00:00
isDisabled={false}
onChange={onChange}
label={t("common:on")}
labelOff={t("common:off")}
/>
)}
></Controller>
</FormGroup>
<FormGroup
label={t("trustEmail")}
labelIcon={
<HelpItem
helpText={helpText("trustEmailHelp")}
forLabel={t("trustEmail")}
forID="kc-trust-email"
/>
}
fieldId="kc-trust-email"
hasNoPaddingTop
>
2020-11-25 14:50:40 +00:00
<Controller
name="config.trustEmail"
2020-11-25 14:50:40 +00:00
defaultValue={false}
control={control}
render={({ onChange, value }) => (
<Switch
id={"kc-trust-email"}
isChecked={value[0] === "true"}
2020-11-25 14:50:40 +00:00
isDisabled={false}
onChange={onChange}
label={t("common:on")}
labelOff={t("common:off")}
/>
)}
></Controller>
</FormGroup>
2020-11-25 16:17:50 +00:00
</FormAccess>
</>
);
};