extended MW
This commit is contained in:
parent
7ccf5eaa87
commit
520f0e6ec7
3 changed files with 37 additions and 18 deletions
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue