import { Button, FormGroup, Switch } 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"; import { convertFormToSettings } from "./LdapSettingsConnection"; import { useAdminClient } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; import { useAlerts } from "../../components/alert/Alerts"; export type LdapSettingsAdvancedProps = { id?: string; form: UseFormMethods; showSectionHeading?: boolean; showSectionDescription?: boolean; }; const PASSWORD_MODIFY_OID = "1.3.6.1.4.1.4203.1.11.1"; export const LdapSettingsAdvanced = ({ id, form, showSectionHeading = false, showSectionDescription = false, }: LdapSettingsAdvancedProps) => { const { t } = useTranslation("user-federation"); const { t: helpText } = useTranslation("user-federation-help"); const adminClient = useAdminClient(); const { realm } = useRealm(); const { addAlert, addError } = useAlerts(); const testLdap = async () => { if (!(await form.trigger())) return; try { const settings = convertFormToSettings(form); const ldapOids = await adminClient.realms.ldapServerCapabilities( { realm }, { ...settings, componentId: id } ); addAlert(t("testSuccess")); const passwordModifyOid = ldapOids.filter( (id: { oid: string }) => id.oid === PASSWORD_MODIFY_OID ); form.setValue("config.usePasswordModifyExtendedOp", [ (passwordModifyOid.length > 0).toString(), ]); } catch (error) { addError("user-federation:testError", error); } }; return ( <> {showSectionHeading && ( )} } fieldId="kc-enable-ldapv3-password" hasNoPaddingTop > ( onChange([`${value}`])} isChecked={value[0] === "true"} label={t("common:on")} labelOff={t("common:off")} /> )} > } fieldId="kc-validate-password-policy" hasNoPaddingTop > ( onChange([`${value}`])} isChecked={value[0] === "true"} label={t("common:on")} labelOff={t("common:off")} /> )} > } fieldId="kc-trust-email" hasNoPaddingTop > ( onChange([`${value}`])} isChecked={value[0] === "true"} label={t("common:on")} labelOff={t("common:off")} /> )} > ); };