import { FormGroup, Select, SelectOption, SelectVariant, TextInput, } from "@patternfly/react-core"; import { useTranslation } from "react-i18next"; import React, { useState } from "react"; import { HelpItem } from "../../components/help-enabler/HelpItem"; import { UseFormMethods, Controller } from "react-hook-form"; import { FormAccess } from "../../components/form-access/FormAccess"; import { useRealm } from "../../context/realm-context/RealmContext"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; export type LdapSettingsGeneralProps = { form: UseFormMethods; showSectionHeading?: boolean; showSectionDescription?: boolean; vendorEdit?: boolean; }; export const LdapSettingsGeneral = ({ form, showSectionHeading = false, showSectionDescription = false, vendorEdit = false, }: LdapSettingsGeneralProps) => { const { t } = useTranslation("user-federation"); const helpText = useTranslation("user-federation-help").t; const adminClient = useAdminClient(); const { realm } = useRealm(); useFetch( () => adminClient.realms.findOne({ realm }), (result) => form.setValue("parentId", result!.id), [] ); const [isVendorDropdownOpen, setIsVendorDropdownOpen] = useState(false); const setVendorDefaultValues = () => { switch (form.getValues("config.vendor[0]")) { case "ad": form.setValue("config.usernameLDAPAttribute[0]", "cn"); form.setValue("config.rdnLDAPAttribute[0]", "cn"); form.setValue("config.uuidLDAPAttribute[0]", "objectGUID"); form.setValue( "config.userObjectClasses[0]", "person, organizationalPerson, user" ); break; case "rhds": form.setValue("config.usernameLDAPAttribute[0]", "uid"); form.setValue("config.rdnLDAPAttribute[0]", "uid"); form.setValue("config.uuidLDAPAttribute[0]", "nsuniqueid"); form.setValue( "config.userObjectClasses[0]", "inetOrgPerson, organizationalPerson" ); break; case "tivoli": form.setValue("config.usernameLDAPAttribute[0]", "uid"); form.setValue("config.rdnLDAPAttribute[0]", "uid"); form.setValue("config.uuidLDAPAttribute[0]", "uniqueidentifier"); form.setValue( "config.userObjectClasses[0]", "inetOrgPerson, organizationalPerson" ); break; case "edirectory": form.setValue("config.usernameLDAPAttribute[0]", "uid"); form.setValue("config.rdnLDAPAttribute[0]", "uid"); form.setValue("config.uuidLDAPAttribute[0]", "guid"); form.setValue( "config.userObjectClasses[0]", "inetOrgPerson, organizationalPerson" ); break; case "other": form.setValue("config.usernameLDAPAttribute[0]", "uid"); form.setValue("config.rdnLDAPAttribute[0]", "uid"); form.setValue("config.uuidLDAPAttribute[0]", "entryUUID"); form.setValue( "config.userObjectClasses[0]", "inetOrgPerson, organizationalPerson" ); break; default: return ""; } }; return ( <> {showSectionHeading && ( )} } fieldId="kc-console-display-name" isRequired > {/* These hidden fields are required so data object written back matches data retrieved */} {form.errors.name && ( {form.errors.name.message} )} } fieldId="kc-vendor" isRequired > ( setIsVendorDropdownOpen(!isVendorDropdownOpen)} isOpen={isVendorDropdownOpen} onSelect={(_, value) => { onChange(value as string); setIsVendorDropdownOpen(false); setVendorDefaultValues(); }} selections={value} variant={SelectVariant.single} > Active Directory Red Hat Directory Server Tivoli Novell eDirectory Other )} > > ); };