From 2a753949f10f70de26dba9fbff7c5ef9583d6c86 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Thu, 23 Mar 2017 06:34:22 -0400 Subject: 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) --- app/user.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'app') 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) -- cgit v1.2.3-1-g7c22