package middleware import ( "github.com/coreos/go-oidc/v3/oidc" "github.com/xlgmokha/x/pkg/mapper" "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, } }) }