fix: correctly "or"-join userfilters

This commit is contained in:
Stefan Benz
2025-05-06 14:47:00 +02:00
parent 8cb1d24b36
commit 3324b22e50
2 changed files with 11 additions and 11 deletions

View File

@@ -194,7 +194,7 @@ func trySearchAndUserBind(
searchQuery := queriesAndToSearchQuery( searchQuery := queriesAndToSearchQuery(
objectClassesToSearchQuery(objectClasses), objectClassesToSearchQuery(objectClasses),
queriesOrToSearchQuery( queriesOrToSearchQuery(
userFiltersToSearchQuery(userFilters, username), userFiltersToSearchQuery(userFilters, username)...,
), ),
) )
@@ -261,12 +261,12 @@ func objectClassesToSearchQuery(classes []string) string {
return searchQuery return searchQuery
} }
func userFiltersToSearchQuery(filters []string, username string) string { func userFiltersToSearchQuery(filters []string, username string) []string {
searchQuery := "" searchQueries := make([]string, len(filters))
for _, filter := range filters { for i, filter := range filters {
searchQuery += "(" + filter + "=" + ldap.EscapeFilter(username) + ")" searchQueries[i] = "(" + filter + "=" + ldap.EscapeFilter(username) + ")"
} }
return searchQuery return searchQueries
} }
func mapLDAPEntryToUser( func mapLDAPEntryToUser(

View File

@@ -49,31 +49,31 @@ func TestProvider_userFiltersToSearchQuery(t *testing.T) {
name string name string
fields []string fields []string
username string username string
want string want []string
}{ }{
{ {
name: "zero", name: "zero",
fields: []string{}, fields: []string{},
username: "user", username: "user",
want: "", want: []string{},
}, },
{ {
name: "one", name: "one",
fields: []string{"test"}, fields: []string{"test"},
username: "user", username: "user",
want: "(test=user)", want: []string{"(test=user)"},
}, },
{ {
name: "three", name: "three",
fields: []string{"test1", "test2", "test3"}, fields: []string{"test1", "test2", "test3"},
username: "user", username: "user",
want: "(test1=user)(test2=user)(test3=user)", want: []string{"(test1=user)", "(test2=user)", "(test3=user)"},
}, },
{ {
name: "five", name: "five",
fields: []string{"test1", "test2", "test3", "test4", "test5"}, fields: []string{"test1", "test2", "test3", "test4", "test5"},
username: "user", username: "user",
want: "(test1=user)(test2=user)(test3=user)(test4=user)(test5=user)", want: []string{"(test1=user)", "(test2=user)", "(test3=user)", "(test4=user)", "(test5=user)"},
}, },
} }
for _, tt := range tests { for _, tt := range tests {