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