summaryrefslogtreecommitdiffstats
path: root/api4/team.go
diff options
context:
space:
mode:
Diffstat (limited to 'api4/team.go')
-rw-r--r--api4/team.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/api4/team.go b/api4/team.go
index 6365ff6de..8564029b0 100644
--- a/api4/team.go
+++ b/api4/team.go
@@ -16,6 +16,11 @@ func InitTeam() {
l4g.Debug(utils.T("api.team.init.debug"))
BaseRoutes.Teams.Handle("", ApiSessionRequired(createTeam)).Methods("POST")
+ BaseRoutes.TeamsForUser.Handle("", ApiSessionRequired(getTeamsForUser)).Methods("GET")
+
+ BaseRoutes.Team.Handle("", ApiSessionRequired(getTeam)).Methods("GET")
+
+ BaseRoutes.TeamMember.Handle("", ApiSessionRequired(getTeamMember)).Methods("GET")
}
@@ -40,3 +45,62 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusCreated)
w.Write([]byte(rteam.ToJson()))
}
+
+func getTeam(c *Context, w http.ResponseWriter, r *http.Request) {
+ c.RequireTeamId()
+ if c.Err != nil {
+ return
+ }
+
+ if team, err := app.GetTeam(c.Params.TeamId); err != nil {
+ c.Err = err
+ return
+ } else {
+ if team.Type != model.TEAM_OPEN && !app.SessionHasPermissionToTeam(c.Session, team.Id, model.PERMISSION_VIEW_TEAM) {
+ c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
+ return
+ }
+
+ w.Write([]byte(team.ToJson()))
+ return
+ }
+}
+
+func getTeamsForUser(c *Context, w http.ResponseWriter, r *http.Request) {
+ c.RequireUserId()
+ if c.Err != nil {
+ return
+ }
+
+ if c.Session.UserId != c.Params.UserId && !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
+ c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
+ return
+ }
+
+ if teams, err := app.GetTeamsForUser(c.Params.UserId); err != nil {
+ c.Err = err
+ return
+ } else {
+ w.Write([]byte(model.TeamListToJson(teams)))
+ }
+}
+
+func getTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
+ c.RequireTeamId().RequireUserId()
+ if c.Err != nil {
+ return
+ }
+
+ if !app.SessionHasPermissionToTeam(c.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
+ c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
+ return
+ }
+
+ if team, err := app.GetTeamMember(c.Params.TeamId, c.Params.UserId); err != nil {
+ c.Err = err
+ return
+ } else {
+ w.Write([]byte(team.ToJson()))
+ return
+ }
+}