extended MW

This commit is contained in:
nquidox 2026-03-06 19:07:14 +03:00
parent 7ccf5eaa87
commit 520f0e6ec7
3 changed files with 37 additions and 18 deletions

View file

@ -25,12 +25,7 @@ type App struct {
func New(ctx context.Context, cfg config.Config) *App { func New(ctx context.Context, cfg config.Config) *App {
//providers //providers
r := router.NewRouter(router.Deps{ u := utils.New()
Host: cfg.Http.Host,
Port: cfg.Http.Port,
Prefix: cfg.Http.Prefix,
GinMode: cfg.Http.GinMode,
})
dbPool, err := dbase.ConnectPool(ctx, dbase.Deps{ dbPool, err := dbase.ConnectPool(ctx, dbase.Deps{
Host: cfg.DBase.Host, Host: cfg.DBase.Host,
@ -40,13 +35,20 @@ func New(ctx context.Context, cfg config.Config) *App {
DBName: cfg.DBase.DBName, DBName: cfg.DBase.DBName,
}) })
u := utils.New() //providers with deps
userProv := user.New(user.Deps{ userProv := user.New(user.Deps{
DB: dbPool, DB: dbPool,
Utils: u, 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 { if err != nil {
log.WithError(err).Fatalf("%v failed to connect database", pkgLogHeader) log.WithError(err).Fatalf("%v failed to connect database", pkgLogHeader)
} }

View file

@ -3,6 +3,7 @@ package router
import ( import (
"context" "context"
"fmt" "fmt"
"merch-api/internal/user"
"net" "net"
"net/http" "net/http"
@ -12,11 +13,14 @@ import (
ginSwagger "github.com/swaggo/gin-swagger" ginSwagger "github.com/swaggo/gin-swagger"
) )
const pkgLogHeader string = "Router |"
type Deps struct { type Deps struct {
Host string Host string
Port string Port string
Prefix string Prefix string
GinMode string GinMode string
UserProvider user.Provider
} }
type Router struct { type Router struct {
@ -37,7 +41,7 @@ func NewRouter(deps Deps) *Router {
gin.SetMode(gin.ReleaseMode) gin.SetMode(gin.ReleaseMode)
err := engine.SetTrustedProxies([]string{"172.20.0.0/16"}) err := engine.SetTrustedProxies([]string{"172.20.0.0/16"})
if err != nil { if err != nil {
log.WithError(err).Error("Router | Set proxies failed") log.WithError(err).Errorf("%v Set proxies failed", pkgLogHeader)
return nil return nil
} }
} }
@ -50,7 +54,7 @@ func NewRouter(deps Deps) *Router {
engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
engine.Use(authMW()) engine.Use(authMW(deps.UserProvider))
return &Router{ return &Router{
srv: &http.Server{ srv: &http.Server{
@ -63,12 +67,12 @@ func NewRouter(deps Deps) *Router {
} }
func (r *Router) Run() error { 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() return r.srv.ListenAndServe()
} }
func (r *Router) Shutdown(ctx context.Context) error { 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) return r.srv.Shutdown(ctx)
} }

View file

@ -3,12 +3,25 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus" 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") log.Debug("Auth Middleware enabled")
return func(c *gin.Context) { 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() c.Next()
} }
} }