github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/teamserver/list.go (about) 1 package teamserver 2 3 import ( 4 "encoding/json" 5 "errors" 6 "net/http" 7 8 "github.com/pf-qiu/concourse/v6/atc" 9 "github.com/pf-qiu/concourse/v6/atc/api/accessor" 10 "github.com/pf-qiu/concourse/v6/atc/api/present" 11 ) 12 13 func (s *Server) ListTeams(w http.ResponseWriter, r *http.Request) { 14 hLog := s.logger.Session("list-teams") 15 16 teams, err := s.teamFactory.GetTeams() 17 if err != nil { 18 hLog.Error("failed-to-get-teams", errors.New("sorry")) 19 w.WriteHeader(http.StatusInternalServerError) 20 } 21 22 acc := accessor.GetAccessor(r) 23 presentedTeams := make([]atc.Team, 0) 24 for _, team := range teams { 25 if acc.IsAuthorized(team.Name()) { 26 presentedTeams = append(presentedTeams, present.Team(team)) 27 } 28 } 29 30 w.Header().Set("Content-Type", "application/json") 31 err = json.NewEncoder(w).Encode(presentedTeams) 32 if err != nil { 33 hLog.Error("failed-to-encode-teams", err) 34 w.WriteHeader(http.StatusInternalServerError) 35 } 36 }