github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/teamserver/get.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) 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  }