diff options
Diffstat (limited to 'app/middleware/init.go')
| -rw-r--r-- | app/middleware/init.go | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/app/middleware/init.go b/app/middleware/init.go index 874ca52..5bf84f6 100644 --- a/app/middleware/init.go +++ b/app/middleware/init.go @@ -1,33 +1,24 @@ package middleware import ( - "github.com/coreos/go-oidc/v3/oidc" + "net/http" + "github.com/xlgmokha/x/pkg/mapper" + "github.com/xlgmokha/x/pkg/x" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain" ) -type CustomClaims struct { - Name string `json:"name"` - Nickname string `json:"nickname"` - Email string `json:"email"` - ProfileURL string `json:"profile"` - Picture string `json:"picture"` - Groups []string `json:"groups_direct"` -} - func init() { - mapper.Register(func(idToken *oidc.IDToken) *domain.User { - customClaims := &CustomClaims{} - if err := idToken.Claims(customClaims); err != nil { - return &domain.User{ID: domain.ID(idToken.Subject)} - } - - return &domain.User{ - ID: domain.ID(idToken.Subject), - Username: customClaims.Nickname, - Email: customClaims.Email, - ProfileURL: customClaims.ProfileURL, - Picture: customClaims.Picture, + mapper.Register(func(h http.Header) *domain.User { + subject := h.Get("x-jwt-claim-sub") + if x.IsPresent(subject) { + return &domain.User{ + ID: domain.ID(subject), + Username: h.Get("x-jwt-claim-username"), + ProfileURL: h.Get("x-jwt-claim-profile-url"), + Picture: h.Get("x-jwt-claim-picture-url"), + } } + return nil }) } |
