summaryrefslogtreecommitdiff
path: root/pkg/web/middleware/user.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/web/middleware/user.go')
-rw-r--r--pkg/web/middleware/user.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/pkg/web/middleware/user.go b/pkg/web/middleware/user.go
index 9dc1a1f..b01ae48 100644
--- a/pkg/web/middleware/user.go
+++ b/pkg/web/middleware/user.go
@@ -1,11 +1,29 @@
package middleware
-import "net/http"
+import (
+ "net/http"
-func User() func(http.Handler) http.Handler {
+ "github.com/xlgmokha/x/pkg/x"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/db"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/domain"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/key"
+)
+
+func User(db db.Repository[*domain.User]) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- next.ServeHTTP(w, r)
+ idToken := key.IDToken.From(r.Context())
+ if x.IsZero(idToken) {
+ next.ServeHTTP(w, r)
+ return
+ }
+
+ user := db.Find(idToken.Subject)
+ if x.IsZero(user) {
+ next.ServeHTTP(w, r)
+ } else {
+ next.ServeHTTP(w, r.WithContext(key.CurrentUser.With(r.Context(), user)))
+ }
})
}
}