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

View File

@@ -49,31 +49,31 @@ func TestProvider_userFiltersToSearchQuery(t *testing.T) {
name string
fields []string
username string
want string
want []string
}{
{
name: "zero",
fields: []string{},
username: "user",
want: "",
want: []string{},
},
{
name: "one",
fields: []string{"test"},
username: "user",
want: "(test=user)",
want: []string{"(test=user)"},
},
{
name: "three",
fields: []string{"test1", "test2", "test3"},
username: "user",
want: "(test1=user)(test2=user)(test3=user)",
want: []string{"(test1=user)", "(test2=user)", "(test3=user)"},
},
{
name: "five",
fields: []string{"test1", "test2", "test3", "test4", "test5"},
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 {