diff --git a/pkg/models/user_list.go b/pkg/models/user_list.go index abd652afe5d..b4efa2c324f 100644 --- a/pkg/models/user_list.go +++ b/pkg/models/user_list.go @@ -102,6 +102,9 @@ func ListUsersFromList(s *xorm.Session, l *List, search string) (users []*user.U cond = builder.In("id", uids) } - users, err = user.ListUsers(s, search, cond) + users, err = user.ListUsers(s, search, &user.ListUserOpts{ + AdditionalCond: cond, + ReturnAllIfNoSearchProvided: true, + }) return } diff --git a/pkg/user/user_test.go b/pkg/user/user_test.go index 92c8b4e390a..6a08d993d73 100644 --- a/pkg/user/user_test.go +++ b/pkg/user/user_test.go @@ -445,7 +445,7 @@ func TestListUsers(t *testing.T) { s := db.NewSession() defer s.Close() - all, err := ListUsers(s, "user7@example.com", builder.In("id", 7)) + all, err := ListUsers(s, "user7@example.com", &ListUserOpts{AdditionalCond: builder.In("id", 7)}) assert.NoError(t, err) assert.Len(t, all, 1) assert.Equal(t, int64(7), all[0].ID) diff --git a/pkg/user/users_list.go b/pkg/user/users_list.go index 7bea66c07d2..b79a5603186 100644 --- a/pkg/user/users_list.go +++ b/pkg/user/users_list.go @@ -23,13 +23,21 @@ import ( "xorm.io/xorm" ) +type ListUserOpts struct { + AdditionalCond builder.Cond + ReturnAllIfNoSearchProvided bool +} + // ListUsers returns a list with all users, filtered by an optional search string -func ListUsers(s *xorm.Session, search string, additionalCond builder.Cond) (users []*User, err error) { +func ListUsers(s *xorm.Session, search string, opts *ListUserOpts) (users []*User, err error) { + if opts == nil { + opts = &ListUserOpts{} + } // Prevent searching for placeholders search = strings.ReplaceAll(search, "%", "") - if search == "" || strings.ReplaceAll(search, " ", "") == "" { + if (search == "" || strings.ReplaceAll(search, " ", "") == "") && !opts.ReturnAllIfNoSearchProvided { return } @@ -45,10 +53,10 @@ func ListUsers(s *xorm.Session, search string, additionalCond builder.Cond) (use ), ) - if additionalCond != nil { + if opts.AdditionalCond != nil { cond = builder.And( cond, - additionalCond, + opts.AdditionalCond, ) }