diff --git a/apps/web/src/app/(portal)/admin/ldap/page.tsx b/apps/web/src/app/(portal)/admin/ldap/page.tsx index 261f3bd..9205a71 100644 --- a/apps/web/src/app/(portal)/admin/ldap/page.tsx +++ b/apps/web/src/app/(portal)/admin/ldap/page.tsx @@ -81,6 +81,15 @@ export default function AdminLdapPage() { const [discovering, setDiscovering] = useState(false); const [manualDn, setManualDn] = useState(''); const [savingFilter, setSavingFilter] = useState(false); + const [discoverSearch, setDiscoverSearch] = useState(''); + + const filteredDiscovered = discovered?.filter((entry) => { + const q = discoverSearch.trim().toLowerCase(); + if (!q) return true; + return ( + entry.name.toLowerCase().includes(q) || entry.dn.toLowerCase().includes(q) + ); + }); const hasAccess = currentUser?.role === 'ADMIN' || currentUser?.role === 'SUPER_ADMIN'; @@ -555,26 +564,41 @@ export default function AdminLdapPage() { {discovered && discovered.length > 0 && ( -
- {discovered.map((entry) => ( - - ))} +
+ setDiscoverSearch(e.target.value)} + placeholder={t('groupFilter.searchPlaceholder')} + className="flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm" + /> +
+ {filteredDiscovered && filteredDiscovered.length > 0 ? ( + filteredDiscovered.map((entry) => ( + + )) + ) : ( +

+ {t('groupFilter.noMatches')} +

+ )} +
)} diff --git a/apps/web/src/messages/de.json b/apps/web/src/messages/de.json index 2cef254..f64ead1 100644 --- a/apps/web/src/messages/de.json +++ b/apps/web/src/messages/de.json @@ -318,6 +318,8 @@ "typeOu": "OU", "typeGroup": "Gruppe", "noneFound": "Keine Gruppen oder OUs gefunden.", + "searchPlaceholder": "Gruppen/OUs durchsuchen...", + "noMatches": "Keine Treffer fuer diese Suche.", "manualDn": "DN manuell hinzufuegen", "addDn": "Hinzufuegen", "selected": "Ausgewaehlt", diff --git a/apps/web/src/messages/en.json b/apps/web/src/messages/en.json index 18e03ff..4b62c4f 100644 --- a/apps/web/src/messages/en.json +++ b/apps/web/src/messages/en.json @@ -318,6 +318,8 @@ "typeOu": "OU", "typeGroup": "Group", "noneFound": "No groups or OUs found.", + "searchPlaceholder": "Search groups/OUs...", + "noMatches": "No matches for this search.", "manualDn": "Add DN manually", "addDn": "Add", "selected": "Selected",