summaryrefslogtreecommitdiff
path: root/pkg/web/middleware/user.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-04-21 13:15:39 -0600
committermo khan <mo@mokhan.ca>2025-04-21 13:15:39 -0600
commitbbd583211275e686f1292a93c828fde64fdda8ed (patch)
tree787ff49cfb08851a80fe41e6291393d644957252 /pkg/web/middleware/user.go
parent1ece3b42051d26050cd612a3ed9a20122d501746 (diff)
feat: provision new users on-demand
Diffstat (limited to 'pkg/web/middleware/user.go')
-rw-r--r--pkg/web/middleware/user.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/pkg/web/middleware/user.go b/pkg/web/middleware/user.go
index b01ae48..ab4e3cc 100644
--- a/pkg/web/middleware/user.go
+++ b/pkg/web/middleware/user.go
@@ -3,6 +3,7 @@ package middleware
import (
"net/http"
+ "github.com/xlgmokha/x/pkg/log"
"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"
@@ -20,10 +21,15 @@ func User(db db.Repository[*domain.User]) func(http.Handler) http.Handler {
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)))
+ user = &domain.User{ID: idToken.Subject}
+ if err := db.Save(user); err != nil {
+ log.WithFields(r.Context(), log.Fields{"error": err})
+ next.ServeHTTP(w, r)
+ return
+ }
}
+
+ next.ServeHTTP(w, r.WithContext(key.CurrentUser.With(r.Context(), user)))
})
}
}