import { FC, useCallback, useEffect, useState, } from 'react'; import { useTranslation } from 'react-i18next'; import { apiv3Put } from '~/client/util/apiv3-client'; import { toastError, toastSuccess } from '~/client/util/toastr'; import { LdapGroupSyncSettings } from '~/interfaces/external-user-group'; import { useSWRxLdapGroupSyncSettings } from '~/stores/external-user-group'; export const LdapGroupSyncSettingsForm: FC = () => { const { t } = useTranslation('admin'); const { data: ldapGroupSyncSettings } = useSWRxLdapGroupSyncSettings(); const [formValues, setFormValues] = useState({ ldapGroupSearchBase: '', ldapGroupMembershipAttribute: '', ldapGroupMembershipAttributeType: 'DN', ldapGroupChildGroupAttribute: '', autoGenerateUserOnLdapGroupSync: false, preserveDeletedLdapGroups: false, ldapGroupNameAttribute: '', ldapGroupDescriptionAttribute: '', }); useEffect(() => { if (ldapGroupSyncSettings != null) { setFormValues(ldapGroupSyncSettings); } }, [ldapGroupSyncSettings, setFormValues]); const submitHandler = useCallback(async(e) => { e.preventDefault(); try { await apiv3Put('/external-user-groups/ldap/sync-settings', formValues); toastSuccess(t('external_user_group.ldap.updated_group_sync_settings')); } catch (errs) { toastError(t(errs[0]?.message)); } }, [formValues, t]); return <>

{t('external_user_group.ldap.group_sync_settings')}

setFormValues({ ...formValues, ldapGroupSearchBase: e.target.value })} />

{t('external_user_group.ldap.group_search_base_dn_detail')}

setFormValues({ ...formValues, ldapGroupMembershipAttribute: e.target.value })} />

{t('external_user_group.ldap.membership_attribute_detail')}
e.g.) member, memberUid

{t('external_user_group.ldap.membership_attribute_type_detail')}

setFormValues({ ...formValues, ldapGroupChildGroupAttribute: e.target.value })}/>

{t('external_user_group.ldap.child_group_attribute_detail')}
e.g.) member

setFormValues({ ...formValues, autoGenerateUserOnLdapGroupSync: !formValues.autoGenerateUserOnLdapGroupSync })} />
setFormValues({ ...formValues, preserveDeletedLdapGroups: !formValues.preserveDeletedLdapGroups })} />

Attribute Mapping ({t('optional')})

setFormValues({ ...formValues, ldapGroupNameAttribute: e.target.value })} placeholder="Default: cn" />

{t('external_user_group.ldap.name_mapper_detail')}

setFormValues({ ...formValues, ldapGroupDescriptionAttribute: e.target.value })} />

{t('external_user_group.ldap.description_mapper_detail')}

; };