diff --git a/internal/app/app.go b/internal/app/app.go index 364bd71..ceb881c 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -4,6 +4,7 @@ import ( "context" "errors" "go.uber.org/zap" + "hub_admin_backend_service/internal/controller/middleware" "hub_admin_backend_service/internal/initialize" "hub_admin_backend_service/internal/models" "hub_admin_backend_service/internal/server/http" @@ -30,6 +31,8 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error { return err } + mw := middleware.NewMiddleware(logger) + repositories := initialize.NewRepository(initialize.RepositoryDeps{ Logger: logger, Mdb: mdb, @@ -38,6 +41,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error { controllers := initialize.NewControllers(initialize.ControllerDeps{ Logger: logger, Repos: repositories, + MW: mw, }) internalSrv := http.NewServer(http.ServerConfig{ diff --git a/internal/controller/middleware/middleware.go b/internal/controller/middleware/middleware.go new file mode 100644 index 0000000..11592fd --- /dev/null +++ b/internal/controller/middleware/middleware.go @@ -0,0 +1,27 @@ +package middleware + +import ( + "github.com/gofiber/fiber/v2" + "go.uber.org/zap" + "hub_admin_backend_service/internal/models" +) + +type MiddleWare struct { + logger *zap.Logger +} + +func NewMiddleware(logger *zap.Logger) *MiddleWare { + return &MiddleWare{ + logger: logger, + } +} + +func (mw *MiddleWare) ExtractUserID(ctx *fiber.Ctx) (string, bool) { + id, ok := ctx.Context().UserValue(models.AuthJWTDecodedUserIDKey).(string) + return id, ok +} + +func (mw *MiddleWare) ExtractToken(ctx *fiber.Ctx) (string, bool) { + token, ok := ctx.Context().UserValue(models.AuthJWTDecodedAccessTokenKey).(string) + return token, ok +} diff --git a/internal/controller/tariff_external/controller.go b/internal/controller/tariff_external/controller.go index 7215f44..130365d 100644 --- a/internal/controller/tariff_external/controller.go +++ b/internal/controller/tariff_external/controller.go @@ -5,24 +5,28 @@ import ( "github.com/gofiber/fiber/v2" "go.mongodb.org/mongo-driver/bson/primitive" "go.uber.org/zap" + "hub_admin_backend_service/internal/controller/middleware" our_errors "hub_admin_backend_service/internal/errors" "hub_admin_backend_service/internal/repository/tariff" ) type Deps struct { - Repo *tariff.Tariff - Logger *zap.Logger + Repo *tariff.Tariff + Logger *zap.Logger + MiddleWare *middleware.MiddleWare } type TariffExternal struct { - repo *tariff.Tariff - logger *zap.Logger + repo *tariff.Tariff + logger *zap.Logger + middleWare *middleware.MiddleWare } func NewTariffExternal(deps Deps) *TariffExternal { return &TariffExternal{ - repo: deps.Repo, - logger: deps.Logger, + repo: deps.Repo, + logger: deps.Logger, + middleWare: deps.MiddleWare, } } diff --git a/internal/controller/tariff_internal/controller.go b/internal/controller/tariff_internal/controller.go index a181a5d..acc045e 100644 --- a/internal/controller/tariff_internal/controller.go +++ b/internal/controller/tariff_internal/controller.go @@ -5,6 +5,7 @@ import ( "github.com/gofiber/fiber/v2" "go.mongodb.org/mongo-driver/bson/primitive" "go.uber.org/zap" + "hub_admin_backend_service/internal/controller/middleware" our_errors "hub_admin_backend_service/internal/errors" "hub_admin_backend_service/internal/models" "hub_admin_backend_service/internal/repository/tariff" @@ -13,19 +14,22 @@ import ( // todo middleware jwt type Deps struct { - Repo *tariff.Tariff - Logger *zap.Logger + Repo *tariff.Tariff + Logger *zap.Logger + MiddleWare *middleware.MiddleWare } type TariffInternal struct { - repo *tariff.Tariff - logger *zap.Logger + repo *tariff.Tariff + logger *zap.Logger + middleWare *middleware.MiddleWare } func NewTariffInternal(deps Deps) *TariffInternal { return &TariffInternal{ - repo: deps.Repo, - logger: deps.Logger, + repo: deps.Repo, + logger: deps.Logger, + middleWare: deps.MiddleWare, } } diff --git a/internal/initialize/controller.go b/internal/initialize/controller.go index 4aa0776..0c48822 100644 --- a/internal/initialize/controller.go +++ b/internal/initialize/controller.go @@ -2,6 +2,7 @@ package initialize import ( "go.uber.org/zap" + "hub_admin_backend_service/internal/controller/middleware" "hub_admin_backend_service/internal/controller/privilege_external" "hub_admin_backend_service/internal/controller/privilege_internal" "hub_admin_backend_service/internal/controller/tariff_external" @@ -11,6 +12,7 @@ import ( type ControllerDeps struct { Logger *zap.Logger Repos *Repository + MW *middleware.MiddleWare } type Controller struct { @@ -31,12 +33,14 @@ func NewControllers(deps ControllerDeps) *Controller { Logger: deps.Logger, }), TariffInternal: tariff_internal.NewTariffInternal(tariff_internal.Deps{ - Logger: deps.Logger, - Repo: deps.Repos.TariffRepo, + Logger: deps.Logger, + Repo: deps.Repos.TariffRepo, + MiddleWare: deps.MW, }), TariffExternal: tariff_external.NewTariffExternal(tariff_external.Deps{ - Logger: deps.Logger, - Repo: deps.Repos.TariffRepo, + Logger: deps.Logger, + Repo: deps.Repos.TariffRepo, + MiddleWare: deps.MW, }), } }