From 43e795448f62fa86f3dad7940fc2297c44a6ea9c Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Tue, 4 Apr 2017 02:34:14 +0900 Subject: APIv4 post /teams/search (#5931) --- api4/team.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'api4/team.go') diff --git a/api4/team.go b/api4/team.go index 85a083ee1..d71ccbf2e 100644 --- a/api4/team.go +++ b/api4/team.go @@ -20,6 +20,7 @@ func InitTeam() { BaseRoutes.Teams.Handle("", ApiSessionRequired(createTeam)).Methods("POST") BaseRoutes.Teams.Handle("", ApiSessionRequired(getAllTeams)).Methods("GET") + BaseRoutes.Teams.Handle("/search", ApiSessionRequired(searchTeams)).Methods("POST") BaseRoutes.TeamsForUser.Handle("", ApiSessionRequired(getTeamsForUser)).Methods("GET") BaseRoutes.TeamsForUser.Handle("/unread", ApiSessionRequired(getTeamsUnreadForUser)).Methods("GET") @@ -456,6 +457,35 @@ func getAllTeams(c *Context, w http.ResponseWriter, r *http.Request) { w.Write([]byte(model.TeamListToJson(teams))) } +func searchTeams(c *Context, w http.ResponseWriter, r *http.Request) { + props := model.TeamSearchFromJson(r.Body) + if props == nil { + c.SetInvalidParam("team_search") + return + } + + if len(props.Term) == 0 { + c.SetInvalidParam("term") + return + } + + var teams []*model.Team + var err *model.AppError + + if app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) { + teams, err = app.SearchAllTeams(props.Term) + } else { + teams, err = app.SearchOpenTeams(props.Term) + } + + if err != nil { + c.Err = err + return + } + + w.Write([]byte(model.TeamListToJson(teams))) +} + func teamExists(c *Context, w http.ResponseWriter, r *http.Request) { c.RequireTeamName() if c.Err != nil { -- cgit v1.2.3-1-g7c22