MM-12234: configurable limit to user autocomplete and search matches (#9499)
* unit test cleanup * allow limiting user search results * clean up test users before starting * model UserSearchOptions to simplify parameters
Этот коммит содержится в:
коммит произвёл
Harrison Healey
родитель
e8c9ccaa7e
Коммит
715097cc76
@@ -8,6 +8,10 @@ import (
|
||||
"io"
|
||||
)
|
||||
|
||||
const USER_SEARCH_MAX_LIMIT = 1000
|
||||
const USER_SEARCH_DEFAULT_LIMIT = 100
|
||||
|
||||
// UserSearch captures the parameters provided by a client for initiating a user search.
|
||||
type UserSearch struct {
|
||||
Term string `json:"term"`
|
||||
TeamId string `json:"team_id"`
|
||||
@@ -16,17 +20,38 @@ type UserSearch struct {
|
||||
NotInChannelId string `json:"not_in_channel_id"`
|
||||
AllowInactive bool `json:"allow_inactive"`
|
||||
WithoutTeam bool `json:"without_team"`
|
||||
Limit int `json:"limit"`
|
||||
}
|
||||
|
||||
// ToJson convert a User to a json string
|
||||
func (u *UserSearch) ToJson() string {
|
||||
func (u *UserSearch) ToJson() []byte {
|
||||
b, _ := json.Marshal(u)
|
||||
return string(b)
|
||||
return b
|
||||
}
|
||||
|
||||
// UserSearchFromJson will decode the input and return a User
|
||||
func UserSearchFromJson(data io.Reader) *UserSearch {
|
||||
var us *UserSearch
|
||||
json.NewDecoder(data).Decode(&us)
|
||||
|
||||
if us.Limit == 0 {
|
||||
us.Limit = USER_SEARCH_DEFAULT_LIMIT
|
||||
}
|
||||
|
||||
return us
|
||||
}
|
||||
|
||||
// UserSearchOptions captures internal parameters derived from the user's permissions and a
|
||||
// UserSearch request.
|
||||
type UserSearchOptions struct {
|
||||
// IsAdmin tracks whether or not the search is being conducted by an administrator.
|
||||
IsAdmin bool
|
||||
// AllowEmails allows search to examine the emails of users.
|
||||
AllowEmails bool
|
||||
// AllowFullNames allows search to examine the full names of users, vs. just usernames and nicknames.
|
||||
AllowFullNames bool
|
||||
// AllowInactive configures whether or not to return inactive users in the search results.
|
||||
AllowInactive bool
|
||||
// Limit limits the total number of results returned.
|
||||
Limit int
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user