github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/usersserver/get.go (about)

     1  package usersserver
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/http"
     6  
     7  	"github.com/pf-qiu/concourse/v6/atc"
     8  	"github.com/pf-qiu/concourse/v6/atc/api/accessor"
     9  )
    10  
    11  func (s *Server) GetUser(w http.ResponseWriter, r *http.Request) {
    12  	hLog := s.logger.Session("user")
    13  	w.Header().Set("Content-Type", "application/json")
    14  
    15  	acc := accessor.GetAccessor(r)
    16  
    17  	claims := acc.Claims()
    18  
    19  	user := atc.UserInfo{
    20  		Sub:      claims.Sub,
    21  		Name:     claims.UserName,
    22  		UserId:   claims.UserID,
    23  		UserName: claims.PreferredUsername,
    24  		Email:    claims.Email,
    25  		IsAdmin:  acc.IsAdmin(),
    26  		IsSystem: acc.IsSystem(),
    27  		Teams:    acc.TeamRoles(),
    28  	}
    29  
    30  	err := json.NewEncoder(w).Encode(user)
    31  	if err != nil {
    32  		hLog.Error("failed-to-encode-users", err)
    33  		w.WriteHeader(http.StatusInternalServerError)
    34  	}
    35  	return
    36  }