package http import ( "github.com/gofiber/fiber/v2" "github.com/google/wire" "leafdev.top/Leaf/leaf-library-3/internal/api/http/middleware" v1 "leafdev.top/Leaf/leaf-library-3/internal/api/http/v1" "leafdev.top/Leaf/leaf-library-3/internal/base/conf" "leafdev.top/Leaf/leaf-library-3/internal/base/logger" "leafdev.top/Leaf/leaf-library-3/internal/service/auth" ) type IMiddleware interface { Handler() fiber.Handler } type Middleware struct { Logger IMiddleware Auth IMiddleware JSONResponse IMiddleware RBAC *middleware.RBAC } type Handlers struct { User *v1.UserController } func NewHandler( user *v1.UserController, ) *Handlers { return &Handlers{ User: user, } } func NewMiddleware(config *conf.Config, logger *logger.Logger, authService *auth.Service) *Middleware { return &Middleware{ Logger: middleware.NewLogger(logger.Logger), Auth: middleware.NewAuth(config, authService), JSONResponse: middleware.NewJSONResponse(), RBAC: middleware.NewRBAC(authService, config), } } var ProviderSet = wire.NewSet( // Init Middleware middleware.NewAuth, middleware.NewLogger, middleware.NewJSONResponse, middleware.NewRBAC, NewMiddleware, // Init Controller v1.NewUserController, // Init Handler NewHandler, )