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  }