69 lines
1.7 KiB
Go
69 lines
1.7 KiB
Go
package http
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/google/wire"
|
|
"leafdev.top/Leaf/leaf-library-3/internal/api/http/controller"
|
|
"leafdev.top/Leaf/leaf-library-3/internal/api/http/middleware"
|
|
"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/services/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
|
|
Workspace *controller.WorkspaceController
|
|
Collection *controller.CollectionController
|
|
Document *controller.DocumentController
|
|
}
|
|
|
|
func NewHandler(
|
|
workspace *controller.WorkspaceController,
|
|
collection *controller.CollectionController,
|
|
document *controller.DocumentController,
|
|
) *Handlers {
|
|
return &Handlers{
|
|
Workspace: workspace,
|
|
Collection: collection,
|
|
Document: document,
|
|
}
|
|
}
|
|
|
|
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
|
|
// controller.NewUserController,
|
|
controller.NewWorkspaceController,
|
|
controller.NewCollectionController,
|
|
controller.NewDocumentController,
|
|
|
|
// Init Handler
|
|
NewHandler,
|
|
)
|