diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-03-23 06:34:22 -0400 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2017-03-23 10:34:22 +0000 |
commit | 2a753949f10f70de26dba9fbff7c5ef9583d6c86 (patch) | |
tree | 4430844f254e62afdcf7b0e61da5870f2c8f7061 /app | |
parent | 7e2e8238842c7d158211faafe03f814bffa78a8f (diff) | |
download | chat-2a753949f10f70de26dba9fbff7c5ef9583d6c86.tar.gz chat-2a753949f10f70de26dba9fbff7c5ef9583d6c86.tar.bz2 chat-2a753949f10f70de26dba9fbff7c5ef9583d6c86.zip |
Implement POST /users/search endpoint for APIv4 (#5822)
* Implement POST /users/search endpoint for APIv4
* PLT-2713 Added store functions for searching users that don't have a team
* PLT-2713 Added 'without_team' option when searching users
* PLT-2713 Added 'without_team' option when searching users (v4)
Diffstat (limited to 'app')
-rw-r--r-- | app/user.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/app/user.go b/app/user.go index c877640d6..33d052708 100644 --- a/app/user.go +++ b/app/user.go @@ -1211,6 +1211,18 @@ func VerifyUserEmail(userId string) *model.AppError { return nil } +func SearchUsers(props *model.UserSearch, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) { + if props.WithoutTeam { + return SearchUsersWithoutTeam(props.Term, searchOptions, asAdmin) + } else if props.InChannelId != "" { + return SearchUsersInChannel(props.InChannelId, props.Term, searchOptions, asAdmin) + } else if props.NotInChannelId != "" { + return SearchUsersNotInChannel(props.TeamId, props.NotInChannelId, props.Term, searchOptions, asAdmin) + } else { + return SearchUsersInTeam(props.TeamId, props.Term, searchOptions, asAdmin) + } +} + func SearchUsersInChannel(channelId string, term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) { if result := <-Srv.Store.User().SearchInChannel(channelId, term, searchOptions); result.Err != nil { return nil, result.Err @@ -1253,6 +1265,20 @@ func SearchUsersInTeam(teamId string, term string, searchOptions map[string]bool } } +func SearchUsersWithoutTeam(term string, searchOptions map[string]bool, asAdmin bool) ([]*model.User, *model.AppError) { + if result := <-Srv.Store.User().SearchWithoutTeam(term, searchOptions); result.Err != nil { + return nil, result.Err + } else { + users := result.Data.([]*model.User) + + for _, user := range users { + SanitizeProfile(user, asAdmin) + } + + return users, nil + } +} + func AutocompleteUsersInChannel(teamId string, channelId string, term string, searchOptions map[string]bool, asAdmin bool) (*model.UserAutocompleteInChannel, *model.AppError) { uchan := Srv.Store.User().SearchInChannel(channelId, term, searchOptions) nuchan := Srv.Store.User().SearchNotInChannel(teamId, channelId, term, searchOptions) |