1package teamserver 2 3import ( 4 "encoding/json" 5 "errors" 6 "net/http" 7 8 "github.com/concourse/concourse/atc" 9 "github.com/concourse/concourse/atc/api/accessor" 10 "github.com/concourse/concourse/atc/api/present" 11) 12 13func (s *Server) GetTeam(w http.ResponseWriter, r *http.Request) { 14 hLog := s.logger.Session("get-team") 15 16 hLog.Debug("getting-team") 17 18 teamName := r.FormValue(":team_name") 19 team, found, err := s.teamFactory.FindTeam(teamName) 20 if err != nil { 21 hLog.Error("failed-to-get-team", err) 22 w.WriteHeader(http.StatusInternalServerError) 23 return 24 } 25 26 if !found { 27 w.WriteHeader(http.StatusNotFound) 28 return 29 } 30 31 acc := accessor.GetAccessor(r) 32 var presentedTeam atc.Team 33 34 if acc.IsAdmin() || acc.IsAuthorized(team.Name()) { 35 presentedTeam = present.Team(team) 36 } else { 37 hLog.Error("unauthorized", errors.New("not authorized to "+team.Name())) 38 w.WriteHeader(http.StatusForbidden) 39 return 40 } 41 42 w.Header().Set("Content-Type", "application/json") 43 if err := json.NewEncoder(w).Encode(presentedTeam); err != nil { 44 hLog.Error("failed-to-encode-team", err) 45 w.WriteHeader(http.StatusInternalServerError) 46 return 47 } 48 return 49} 50