leaf-library-3/internal/api/http/provider.go

59 lines
1.3 KiB
Go
Raw Normal View History

2024-12-05 17:44:29 +00:00
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"
2024-12-06 15:38:22 +00:00
"leafdev.top/Leaf/leaf-library-3/internal/services/auth"
2024-12-05 17:44:29 +00:00
)
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,
)