feat(260729-d3k): multi-line Base-DN textarea + reworked scope i18n

- Base-DN admin field is now a multi-line textarea (one DN per line),
  value stays a single newline-separated string, no schema change
- baseDnHint key added (de/en) explaining the Base-DN(s) sync scope
- groupFilter.description/emptyMeansAll reworded: group filter is an
  optional extra restriction; empty selection means all users under
  the base DN(s) are synced (drops the old "nothing is synced"
  framing)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-29 09:37:51 +02:00
parent 5cbd530a87
commit 96be7e168b
3 changed files with 11 additions and 8 deletions
@@ -463,14 +463,15 @@ export default function AdminLdapPage() {
<label className="text-sm font-medium text-foreground"> <label className="text-sm font-medium text-foreground">
{t('baseDn')} {t('baseDn')}
</label> </label>
<input <textarea
type="text"
value={formData.baseDn} value={formData.baseDn}
onChange={(e) => setFormData({ ...formData, baseDn: e.target.value })} onChange={(e) => setFormData({ ...formData, baseDn: e.target.value })}
placeholder="dc=example,dc=com" placeholder={'dc=example,dc=com\nou=extern,dc=example,dc=com'}
className="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm" rows={3}
className="flex min-h-20 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"
required required
/> />
<p className="text-xs text-muted-foreground">{t('baseDnHint')}</p>
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
<label className="text-sm font-medium text-foreground"> <label className="text-sm font-medium text-foreground">
+3 -2
View File
@@ -284,6 +284,7 @@
"connectionTitle": "Verbindungseinstellungen", "connectionTitle": "Verbindungseinstellungen",
"serverUrl": "Server-URL", "serverUrl": "Server-URL",
"baseDn": "Basis-DN", "baseDn": "Basis-DN",
"baseDnHint": "Ein DN pro Zeile. Die Basis-DN(s) legen den Umfang der Synchronisation fest.",
"bindDn": "Bind-DN", "bindDn": "Bind-DN",
"bindPassword": "Bind-Passwort", "bindPassword": "Bind-Passwort",
"searchFilter": "Suchfilter", "searchFilter": "Suchfilter",
@@ -317,7 +318,7 @@
}, },
"groupFilter": { "groupFilter": {
"title": "Import-Filter (Gruppen/OUs)", "title": "Import-Filter (Gruppen/OUs)",
"description": "Beschraenkt den Sync auf ausgewaehlte AD-Gruppen oder Organisationseinheiten. Ohne Auswahl wird nichts synchronisiert.", "description": "Optionale zusaetzliche Einschraenkung auf ausgewaehlte AD-Gruppen oder Organisationseinheiten. Ohne Auswahl werden alle Benutzer unter den Basis-DN(s) synchronisiert.",
"discover": "Gruppen/OUs suchen", "discover": "Gruppen/OUs suchen",
"typeOu": "OU", "typeOu": "OU",
"typeGroup": "Gruppe", "typeGroup": "Gruppe",
@@ -327,7 +328,7 @@
"manualDn": "DN manuell hinzufuegen", "manualDn": "DN manuell hinzufuegen",
"addDn": "Hinzufuegen", "addDn": "Hinzufuegen",
"selected": "Ausgewaehlt", "selected": "Ausgewaehlt",
"emptyMeansAll": "Keine Auswahl - es wird nichts synchronisiert.", "emptyMeansAll": "Keine Auswahl - alle Benutzer unter den Basis-DN(s) werden synchronisiert.",
"save": "Filter speichern" "save": "Filter speichern"
}, },
"userExclude": { "userExclude": {
+3 -2
View File
@@ -284,6 +284,7 @@
"connectionTitle": "Connection settings", "connectionTitle": "Connection settings",
"serverUrl": "Server URL", "serverUrl": "Server URL",
"baseDn": "Base DN", "baseDn": "Base DN",
"baseDnHint": "One DN per line. The base DN(s) define the sync scope.",
"bindDn": "Bind DN", "bindDn": "Bind DN",
"bindPassword": "Bind password", "bindPassword": "Bind password",
"searchFilter": "Search filter", "searchFilter": "Search filter",
@@ -317,7 +318,7 @@
}, },
"groupFilter": { "groupFilter": {
"title": "Import filter (groups/OUs)", "title": "Import filter (groups/OUs)",
"description": "Restrict sync to selected AD groups or organizational units. With no selection, nothing is synced.", "description": "Optional additional restriction to selected AD groups or organizational units. With no selection, all users under the base DN(s) are synced.",
"discover": "Discover groups/OUs", "discover": "Discover groups/OUs",
"typeOu": "OU", "typeOu": "OU",
"typeGroup": "Group", "typeGroup": "Group",
@@ -327,7 +328,7 @@
"manualDn": "Add DN manually", "manualDn": "Add DN manually",
"addDn": "Add", "addDn": "Add",
"selected": "Selected", "selected": "Selected",
"emptyMeansAll": "No selection - nothing is synced.", "emptyMeansAll": "No selection - all users under the base DN(s) are synced.",
"save": "Save filter" "save": "Save filter"
}, },
"userExclude": { "userExclude": {