diff options
| author | mo khan <mo@mokhan.ca> | 2025-04-16 16:11:00 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-04-16 16:11:00 -0600 |
| commit | 3e70d67683e369d0b86db2bf3ff19df84e990710 (patch) | |
| tree | 5f9d8dd60bdde1466369cc83548199490a19b449 /app | |
| parent | 691e4ba30113cee3508a54fd2383e34f38b55bde (diff) | |
feat: create middleware to parse id token from session cookie
Diffstat (limited to 'app')
| -rw-r--r-- | app/app.go | 5 | ||||
| -rw-r--r-- | app/init.go | 36 |
2 files changed, 33 insertions, 8 deletions
@@ -3,7 +3,9 @@ package app import ( "net/http" + "github.com/rs/zerolog" "github.com/xlgmokha/x/pkg/ioc" + "github.com/xlgmokha/x/pkg/log" "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" @@ -26,5 +28,6 @@ func New() http.Handler { mux.Handle("GET /", http.FileServer(http.Dir("public"))) - return mux + logger := ioc.MustResolve[*zerolog.Logger](ioc.Default) + return log.HTTP(logger)(mux) } diff --git a/app/init.go b/app/init.go index 8ef0602..5d05a44 100644 --- a/app/init.go +++ b/app/init.go @@ -2,12 +2,14 @@ package app import ( "context" - "fmt" - "log" "net/http" + "os" + "github.com/rs/zerolog" "github.com/xlgmokha/x/pkg/env" "github.com/xlgmokha/x/pkg/ioc" + "github.com/xlgmokha/x/pkg/log" + "github.com/xlgmokha/x/pkg/mapper" "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" @@ -18,17 +20,33 @@ import ( ) type transport struct { + logger *zerolog.Logger } func (r *transport) RoundTrip(request *http.Request) (*http.Response, error) { + ctx := r.logger.WithContext(request.Context()) + + defer func() { + log.WithFields(ctx, mapper.MapFrom[*http.Request, log.Fields](request)) + zerolog.Ctx(ctx).Print() + }() + response, err := http.DefaultTransport.RoundTrip(request) - if err == nil { - fmt.Printf("%v: %v %v\n", response.StatusCode, request.Method, request.URL) + if err != nil { + r.logger.Err(err) + return response, err } - return response, err + + log.WithFields(ctx, log.Fields{ + "status_code": response.StatusCode, + }) + return response, nil } func init() { + ioc.RegisterSingleton[*zerolog.Logger](ioc.Default, func() *zerolog.Logger { + return log.New(os.Stdout, log.Fields{}) + }) ioc.RegisterSingleton[db.Repository](ioc.Default, func() db.Repository { return db.NewRepository() }) @@ -45,7 +63,11 @@ func init() { return health.New() }) ioc.RegisterSingleton[*http.Client](ioc.Default, func() *http.Client { - return &http.Client{Transport: &transport{}} + return &http.Client{ + Transport: &transport{ + logger: ioc.MustResolve[*zerolog.Logger](ioc.Default), + }, + } }) ioc.RegisterSingleton[*oidc.OpenID](ioc.Default, func() *oidc.OpenID { item, err := oidc.New( @@ -56,7 +78,7 @@ func init() { env.Fetch("OAUTH_REDIRECT_URL", "http://localhost:8080/session/callback"), ) if err != nil { - log.Fatal(err) + ioc.MustResolve[*zerolog.Logger](ioc.Default).Err(err).Send() } return item }) |
