From 520f0e6ec7a6ae4cdf1102ad2fe1f02e89846382 Mon Sep 17 00:00:00 2001 From: nquidox Date: Fri, 6 Mar 2026 19:07:14 +0300 Subject: [PATCH] extended MW --- internal/app/handler.go | 18 ++++++++++-------- pkg/router/handler.go | 20 ++++++++++++-------- pkg/router/middleware.go | 17 +++++++++++++++-- 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/internal/app/handler.go b/internal/app/handler.go index 9e98919..6b09c72 100644 --- a/internal/app/handler.go +++ b/internal/app/handler.go @@ -25,12 +25,7 @@ type App struct { func New(ctx context.Context, cfg config.Config) *App { //providers - r := router.NewRouter(router.Deps{ - Host: cfg.Http.Host, - Port: cfg.Http.Port, - Prefix: cfg.Http.Prefix, - GinMode: cfg.Http.GinMode, - }) + u := utils.New() dbPool, err := dbase.ConnectPool(ctx, dbase.Deps{ Host: cfg.DBase.Host, @@ -40,13 +35,20 @@ func New(ctx context.Context, cfg config.Config) *App { DBName: cfg.DBase.DBName, }) - u := utils.New() - + //providers with deps userProv := user.New(user.Deps{ DB: dbPool, Utils: u, }) + r := router.NewRouter(router.Deps{ + Host: cfg.Http.Host, + Port: cfg.Http.Port, + Prefix: cfg.Http.Prefix, + GinMode: cfg.Http.GinMode, + UserProvider: userProv, + }) + if err != nil { log.WithError(err).Fatalf("%v failed to connect database", pkgLogHeader) } diff --git a/pkg/router/handler.go b/pkg/router/handler.go index 4698713..0ef9742 100644 --- a/pkg/router/handler.go +++ b/pkg/router/handler.go @@ -3,6 +3,7 @@ package router import ( "context" "fmt" + "merch-api/internal/user" "net" "net/http" @@ -12,11 +13,14 @@ import ( ginSwagger "github.com/swaggo/gin-swagger" ) +const pkgLogHeader string = "Router |" + type Deps struct { - Host string - Port string - Prefix string - GinMode string + Host string + Port string + Prefix string + GinMode string + UserProvider user.Provider } type Router struct { @@ -37,7 +41,7 @@ func NewRouter(deps Deps) *Router { gin.SetMode(gin.ReleaseMode) err := engine.SetTrustedProxies([]string{"172.20.0.0/16"}) if err != nil { - log.WithError(err).Error("Router | Set proxies failed") + log.WithError(err).Errorf("%v Set proxies failed", pkgLogHeader) return nil } } @@ -50,7 +54,7 @@ func NewRouter(deps Deps) *Router { engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) - engine.Use(authMW()) + engine.Use(authMW(deps.UserProvider)) return &Router{ srv: &http.Server{ @@ -63,12 +67,12 @@ func NewRouter(deps Deps) *Router { } func (r *Router) Run() error { - log.Info("Http server started on: ", r.srv.Addr) + log.Infof("%v Http server started on: %v", pkgLogHeader, r.srv.Addr) return r.srv.ListenAndServe() } func (r *Router) Shutdown(ctx context.Context) error { - log.Info("Http server shutting down") + log.Infof("%v Http server shutting down", pkgLogHeader) return r.srv.Shutdown(ctx) } diff --git a/pkg/router/middleware.go b/pkg/router/middleware.go index e6bb087..1553282 100644 --- a/pkg/router/middleware.go +++ b/pkg/router/middleware.go @@ -3,12 +3,25 @@ package router import ( "github.com/gin-gonic/gin" log "github.com/sirupsen/logrus" + "merch-api/internal/user" + "merch-api/pkg/responses" + "net/http" ) -func authMW() gin.HandlerFunc { +func authMW(up user.Provider) gin.HandlerFunc { log.Debug("Auth Middleware enabled") return func(c *gin.Context) { - c.Set("userUuid", "019caeab-aa81-7f09-a220-d7e675300638") //TODO placeholder for dev purposes + userUuid := "019caeab-aa81-7f09-a220-d7e675300638" //TODO placeholder for dev purposes + log.Warnf("%v using placeholder uuid: %v", pkgLogHeader, userUuid) + + userId, err := up.GetUserId(c, userUuid) + if err != nil { + c.JSON(http.StatusUnauthorized, responses.Unauthorized{Error: err.Error()}) + log.WithError(err).Errorf("%v error converting user uuid to user id: %v", pkgLogHeader, userUuid) + return + } + + c.Set("userId", userId) c.Next() } }