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

192 lines
6.1 KiB
TypeScript
Raw Normal View History

2020-11-25 16:17:50 +00:00
import { FormGroup, Switch, TextInput } from "@patternfly/react-core";
import { useTranslation } from "react-i18next";
import React from "react";
import { HelpItem } from "../../components/help-enabler/HelpItem";
import { UseFormMethods, Controller } from "react-hook-form";
import { FormAccess } from "../../components/form-access/FormAccess";
import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader";
export type LdapSettingsSynchronizationProps = {
form: UseFormMethods;
showSectionHeading?: boolean;
showSectionDescription?: boolean;
};
export const LdapSettingsSynchronization = ({
form,
showSectionHeading = false,
showSectionDescription = false,
}: LdapSettingsSynchronizationProps) => {
const { t } = useTranslation("user-federation");
2021-12-14 14:56:36 +00:00
const { t: helpText } = useTranslation("user-federation-help");
2020-11-25 14:50:40 +00:00
2021-05-13 21:45:11 +00:00
const watchPeriodicSync = form.watch("config.periodicFullSync", false);
const watchChangedSync = form.watch("config.periodicChangedUsersSync", false);
2021-05-14 18:43:03 +00:00
return (
<>
{showSectionHeading && (
<WizardSectionHeader
title={t("synchronizationSettings")}
description={helpText("ldapSynchronizationSettingsDescription")}
showDescription={showSectionDescription}
/>
)}
2020-11-25 16:17:50 +00:00
<FormAccess role="manage-realm" isHorizontal>
<FormGroup
hasNoPaddingTop
label={t("importUsers")}
labelIcon={
<HelpItem
2021-12-14 14:56:36 +00:00
helpText="user-federation-help:importUsersHelp"
fieldLabelId="user-federation:importUsers"
/>
}
fieldId="kc-import-users"
>
2020-11-25 14:50:40 +00:00
<Controller
name="config.importEnabled"
defaultValue={["true"]}
control={form.control}
2020-11-25 14:50:40 +00:00
render={({ onChange, value }) => (
<Switch
id="kc-import-users"
data-testid="import-users"
name="importEnabled"
label={t("common:on")}
labelOff={t("common:off")}
onChange={(value) => onChange([`${value}`])}
isChecked={value[0] === "true"}
2020-11-25 14:50:40 +00:00
isDisabled={false}
/>
)}
></Controller>
</FormGroup>
<FormGroup
label={t("batchSize")}
labelIcon={
<HelpItem
2021-12-14 14:56:36 +00:00
helpText="user-federation-help:batchSizeHelp"
fieldLabelId="user-federation:batchSize"
/>
}
fieldId="kc-batch-size"
>
2020-11-25 14:50:40 +00:00
<TextInput
type="number"
2021-03-02 15:37:51 +00:00
min={0}
2020-11-25 14:50:40 +00:00
id="kc-batch-size"
data-testid="batch-size"
name="config.batchSizeForSync[0]"
ref={form.register}
2020-11-25 14:50:40 +00:00
/>
</FormGroup>
<FormGroup
2021-12-14 14:56:36 +00:00
label={t("periodicFullSync")}
labelIcon={
<HelpItem
2021-12-14 14:56:36 +00:00
helpText="user-federation-help:periodicFullSyncHelp"
fieldLabelId="user-federation:periodicFullSync"
/>
}
2021-05-13 21:45:11 +00:00
fieldId="kc-periodic-full-sync"
hasNoPaddingTop
>
2021-05-13 21:45:11 +00:00
<Controller
name="config.periodicFullSync"
defaultValue={false}
control={form.control}
render={({ onChange, value }) => (
<Switch
id="kc-periodic-full-sync"
data-testid="periodic-full-sync"
2021-05-13 21:45:11 +00:00
isDisabled={false}
onChange={(value) => onChange(value)}
isChecked={value === true}
label={t("common:on")}
labelOff={t("common:off")}
ref={form.register}
/>
)}
></Controller>
</FormGroup>
2021-05-13 21:45:11 +00:00
{watchPeriodicSync && (
<FormGroup
hasNoPaddingTop
label={t("fullSyncPeriod")}
labelIcon={
<HelpItem
2021-12-14 14:56:36 +00:00
helpText="user-federation-help:fullSyncPeriodHelp"
fieldLabelId="user-federation:fullSyncPeriod"
2021-05-13 21:45:11 +00:00
/>
}
fieldId="kc-full-sync-period"
>
<TextInput
type="number"
min={-1}
defaultValue={604800}
id="kc-full-sync-period"
data-testid="full-sync-period"
2021-05-13 21:45:11 +00:00
name="config.fullSyncPeriod[0]"
ref={form.register}
/>
</FormGroup>
)}
<FormGroup
2021-12-14 14:56:36 +00:00
label={t("periodicChangedUsersSync")}
labelIcon={
<HelpItem
2021-12-14 14:56:36 +00:00
helpText="user-federation-help:periodicChangedUsersSyncHelp"
fieldLabelId="user-federation:periodicChangedUsersSync"
/>
}
2021-05-13 21:45:11 +00:00
fieldId="kc-periodic-changed-users-sync"
hasNoPaddingTop
>
2021-05-13 21:45:11 +00:00
<Controller
name="config.periodicChangedUsersSync"
defaultValue={false}
control={form.control}
render={({ onChange, value }) => (
<Switch
id="kc-periodic-changed-users-sync"
data-testid="periodic-changed-users-sync"
2021-05-13 21:45:11 +00:00
isDisabled={false}
onChange={(value) => onChange(value)}
isChecked={value === true}
label={t("common:on")}
labelOff={t("common:off")}
ref={form.register}
/>
)}
></Controller>
</FormGroup>
2021-05-13 21:45:11 +00:00
{watchChangedSync && (
<FormGroup
label={t("changedUsersSyncPeriod")}
labelIcon={
<HelpItem
2021-12-14 14:56:36 +00:00
helpText="user-federation-help:changedUsersSyncHelp"
fieldLabelId="user-federation:changedUsersSyncPeriod"
2021-05-13 21:45:11 +00:00
/>
}
fieldId="kc-changed-users-sync-period"
hasNoPaddingTop
>
<TextInput
type="number"
min={-1}
defaultValue={86400}
id="kc-changed-users-sync-period"
data-testid="changed-users-sync-period"
2021-05-13 21:45:11 +00:00
name="config.changedSyncPeriod[0]"
ref={form.register}
/>
</FormGroup>
)}
2020-11-25 16:17:50 +00:00
</FormAccess>
</>
);
};