summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/cfg/cfg.go5
-rw-r--r--app/controllers/dashboard/controller.go6
-rw-r--r--app/controllers/sessions/controller.go6
-rw-r--r--app/controllers/sparkles/controller.go9
-rw-r--r--app/controllers/sparkles/init.go4
-rw-r--r--app/init.go13
-rw-r--r--app/middleware/id_token.go3
-rw-r--r--app/middleware/is_logged_in.go2
-rw-r--r--app/middleware/token_parser.go4
-rw-r--r--app/middleware/user.go4
-rw-r--r--pkg/pls/log.go11
11 files changed, 43 insertions, 24 deletions
diff --git a/app/cfg/cfg.go b/app/cfg/cfg.go
index 2dbadc4..ee6fffe 100644
--- a/app/cfg/cfg.go
+++ b/app/cfg/cfg.go
@@ -2,9 +2,14 @@ package cfg
import (
"github.com/xlgmokha/x/pkg/context"
+ "github.com/xlgmokha/x/pkg/env"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/oidc"
)
var CurrentUser context.Key[*domain.User] = context.Key[*domain.User]("current_user")
var IDToken context.Key[*oidc.IDToken] = context.Key[*oidc.IDToken]("id_token")
+var OIDCIssuer string = env.Fetch("OIDC_ISSUER", "https://gitlab.com")
+var OAuthClientID string = env.Fetch("OAUTH_CLIENT_ID", "client_id")
+var OAuthClientSecret string = env.Fetch("OAUTH_CLIENT_SECRET", "client_secret")
+var OAuthRedirectURL string = env.Fetch("OAUTH_REDIRECT_URL", "http://localhost:8080/session/callback")
diff --git a/app/controllers/dashboard/controller.go b/app/controllers/dashboard/controller.go
index 0f165ad..097834f 100644
--- a/app/controllers/dashboard/controller.go
+++ b/app/controllers/dashboard/controller.go
@@ -3,10 +3,10 @@ package dashboard
import (
"net/http"
- "github.com/xlgmokha/x/pkg/log"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/middleware"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/views"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
)
type Controller struct {
@@ -31,7 +31,7 @@ func (c *Controller) Show(w http.ResponseWriter, r *http.Request) {
dto := &ViewDashboardDTO{CurrentUser: currentUser}
if err := views.Render(w, "dashboard/show", dto); err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
w.WriteHeader(http.StatusInternalServerError)
return
}
@@ -48,7 +48,7 @@ func (c *Controller) Navigation(w http.ResponseWriter, r *http.Request) {
IsLoggedIn: currentUser != nil,
}
if err := views.Render(w, "dashboard/nav", dto); err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
w.WriteHeader(http.StatusInternalServerError)
return
}
diff --git a/app/controllers/sessions/controller.go b/app/controllers/sessions/controller.go
index 3fb29ec..77a30fd 100644
--- a/app/controllers/sessions/controller.go
+++ b/app/controllers/sessions/controller.go
@@ -5,9 +5,9 @@ import (
"time"
"github.com/xlgmokha/x/pkg/cookie"
- "github.com/xlgmokha/x/pkg/log"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/middleware"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/oidc"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/web"
)
@@ -127,14 +127,14 @@ The `id_token` is a JWT that looks like the following body when it is decoded:
func (c *Controller) Create(w http.ResponseWriter, r *http.Request) {
tokens, err := c.svc.Exchange(r)
if err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
w.WriteHeader(http.StatusBadRequest)
return
}
encoded, err := tokens.ToBase64String()
if err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
w.WriteHeader(http.StatusBadRequest)
return
}
diff --git a/app/controllers/sparkles/controller.go b/app/controllers/sparkles/controller.go
index dbb5f55..4963950 100644
--- a/app/controllers/sparkles/controller.go
+++ b/app/controllers/sparkles/controller.go
@@ -9,6 +9,7 @@ import (
"github.com/xlgmokha/x/pkg/x"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/middleware"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
)
type Controller struct {
@@ -31,7 +32,7 @@ func (c *Controller) MountTo(mux *http.ServeMux) {
func (c *Controller) Index(w http.ResponseWriter, r *http.Request) {
if err := serde.ToHTTP(w, r, c.db.All()); err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
w.WriteHeader(http.StatusInternalServerError)
}
}
@@ -45,14 +46,14 @@ func (c *Controller) Create(w http.ResponseWriter, r *http.Request) {
}
if err := c.db.Save(sparkle); err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
w.WriteHeader(http.StatusBadRequest)
return
}
w.WriteHeader(http.StatusCreated)
if err := serde.ToHTTP(w, r, sparkle); err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
w.WriteHeader(http.StatusInternalServerError)
return
}
@@ -66,7 +67,7 @@ func (c *Controller) Restore(w http.ResponseWriter, r *http.Request) {
x.Each(sparkles, func(sparkle *domain.Sparkle) {
if err := c.db.Save(sparkle); err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
}
})
}
diff --git a/app/controllers/sparkles/init.go b/app/controllers/sparkles/init.go
index 1118a09..c85a49d 100644
--- a/app/controllers/sparkles/init.go
+++ b/app/controllers/sparkles/init.go
@@ -3,18 +3,18 @@ package sparkles
import (
"net/http"
- "github.com/xlgmokha/x/pkg/log"
"github.com/xlgmokha/x/pkg/mapper"
"github.com/xlgmokha/x/pkg/serde"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
)
func init() {
mapper.Register[*http.Request, *domain.Sparkle](func(r *http.Request) *domain.Sparkle {
sparkle, err := serde.FromHTTP[*domain.Sparkle](r)
if err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
}
sparkle.Author = cfg.CurrentUser.From(r.Context())
return sparkle
diff --git a/app/init.go b/app/init.go
index 74b4bfa..30a6dbb 100644
--- a/app/init.go
+++ b/app/init.go
@@ -6,9 +6,9 @@ import (
"os"
"github.com/rs/zerolog"
- "github.com/xlgmokha/x/pkg/env"
"github.com/xlgmokha/x/pkg/ioc"
"github.com/xlgmokha/x/pkg/log"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/controllers/dashboard"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/controllers/health"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/controllers/sessions"
@@ -50,12 +50,13 @@ func init() {
}
})
ioc.RegisterSingleton[*oidc.OpenID](ioc.Default, func() *oidc.OpenID {
+ ctx := context.WithValue(context.Background(), oauth2.HTTPClient, ioc.MustResolve[*http.Client](ioc.Default))
item, err := oidc.New(
- context.WithValue(context.Background(), oauth2.HTTPClient, ioc.MustResolve[*http.Client](ioc.Default)),
- env.Fetch("OIDC_ISSUER", "https://gitlab.com"),
- env.Fetch("OAUTH_CLIENT_ID", "client_id"),
- env.Fetch("OAUTH_CLIENT_SECRET", "client_secret"),
- env.Fetch("OAUTH_REDIRECT_URL", "http://localhost:8080/session/callback"),
+ ctx,
+ cfg.OIDCIssuer,
+ cfg.OAuthClientID,
+ cfg.OAuthClientSecret,
+ cfg.OAuthRedirectURL,
)
if err != nil {
ioc.MustResolve[*zerolog.Logger](ioc.Default).Err(err).Send()
diff --git a/app/middleware/id_token.go b/app/middleware/id_token.go
index bb874e2..5a44f49 100644
--- a/app/middleware/id_token.go
+++ b/app/middleware/id_token.go
@@ -7,6 +7,7 @@ import (
"github.com/xlgmokha/x/pkg/x"
xcfg "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/oidc"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/web"
)
@@ -19,7 +20,7 @@ func IDToken(cfg *oidc.OpenID, parsers ...TokenParser) func(http.Handler) http.H
idToken, err := cfg.ValidateIDToken(r.Context(), rawIDToken)
if err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
web.ExpireCookie(w, "session")
} else {
log.WithFields(r.Context(), log.Fields{"id_token": idToken})
diff --git a/app/middleware/is_logged_in.go b/app/middleware/is_logged_in.go
index 92b9c8b..e2f0445 100644
--- a/app/middleware/is_logged_in.go
+++ b/app/middleware/is_logged_in.go
@@ -8,5 +8,5 @@ import (
)
var IsLoggedIn x.Predicate[*http.Request] = x.Predicate[*http.Request](func(r *http.Request) bool {
- return !x.IsZero(cfg.CurrentUser.From(r.Context()))
+ return x.IsPresent(cfg.CurrentUser.From(r.Context()))
})
diff --git a/app/middleware/token_parser.go b/app/middleware/token_parser.go
index a719b2f..8d81aab 100644
--- a/app/middleware/token_parser.go
+++ b/app/middleware/token_parser.go
@@ -3,8 +3,8 @@ package middleware
import (
"net/http"
- "github.com/xlgmokha/x/pkg/log"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/oidc"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
)
type TokenParser func(*http.Request) oidc.RawToken
@@ -18,7 +18,7 @@ func IDTokenFromSessionCookie(r *http.Request) oidc.RawToken {
tokens, err := oidc.TokensFromBase64String(cookies[0].Value)
if err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
return ""
}
diff --git a/app/middleware/user.go b/app/middleware/user.go
index 21455ba..03c04d6 100644
--- a/app/middleware/user.go
+++ b/app/middleware/user.go
@@ -3,12 +3,12 @@ package middleware
import (
"net/http"
- "github.com/xlgmokha/x/pkg/log"
"github.com/xlgmokha/x/pkg/mapper"
"github.com/xlgmokha/x/pkg/x"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/oidc"
+ "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
)
func User(db domain.Repository[*domain.User]) func(http.Handler) http.Handler {
@@ -24,7 +24,7 @@ func User(db domain.Repository[*domain.User]) func(http.Handler) http.Handler {
if !x.IsPresent(user) {
user = mapper.MapFrom[*oidc.IDToken, *domain.User](idToken)
if err := db.Save(user); err != nil {
- log.WithFields(r.Context(), log.Fields{"error": err})
+ pls.LogError(r.Context(), err)
next.ServeHTTP(w, r)
return
}
diff --git a/pkg/pls/log.go b/pkg/pls/log.go
new file mode 100644
index 0000000..2e90a0c
--- /dev/null
+++ b/pkg/pls/log.go
@@ -0,0 +1,11 @@
+package pls
+
+import (
+ "context"
+
+ "github.com/xlgmokha/x/pkg/log"
+)
+
+func LogError(ctx context.Context, err error) {
+ log.WithFields(ctx, log.Fields{"error": err})
+}