summaryrefslogtreecommitdiff
path: root/app/middleware/init.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-05-28 12:14:11 -0600
committermo khan <mo@mokhan.ca>2025-05-28 12:14:11 -0600
commit591f293c8bcf464ed62701321d3f27de31ceb621 (patch)
tree6b9c8c303f9816a3faf7abb9a75c3c59b6a5808a /app/middleware/init.go
parentf76542bc846bc77e825055a1a6ea7cd0cb178844 (diff)
refactor: parse headers injected by envoy
Diffstat (limited to 'app/middleware/init.go')
-rw-r--r--app/middleware/init.go35
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
})
}