diff options
Diffstat (limited to 'api4/team.go')
-rw-r--r-- | api4/team.go | 30 |
1 files changed, 30 insertions, 0 deletions
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 { |