168 lines
4.7 KiB
Go
168 lines
4.7 KiB
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"management/assets"
|
|
"management/internal/erpserver/handler/captcha"
|
|
"management/internal/erpserver/handler/system/audit"
|
|
"management/internal/erpserver/handler/system/auth"
|
|
configapp "management/internal/erpserver/handler/system/config"
|
|
"management/internal/erpserver/handler/system/department"
|
|
"management/internal/erpserver/handler/system/home"
|
|
"management/internal/erpserver/handler/system/loginlog"
|
|
"management/internal/erpserver/handler/system/menu"
|
|
"management/internal/erpserver/handler/system/role"
|
|
"management/internal/erpserver/handler/system/user"
|
|
"management/internal/erpserver/handler/upload"
|
|
v1 "management/internal/erpserver/service/v1"
|
|
authv1 "management/internal/erpserver/service/v1/auth"
|
|
"management/internal/pkg/config"
|
|
"management/internal/pkg/mid"
|
|
"management/internal/pkg/render"
|
|
"management/internal/pkg/session"
|
|
"management/internal/tasks"
|
|
|
|
"github.com/drhin/logger"
|
|
"github.com/go-chi/chi/v5"
|
|
"github.com/go-chi/chi/v5/middleware"
|
|
)
|
|
|
|
type Config struct {
|
|
Conf *config.Config
|
|
Log *logger.Logger
|
|
Sm session.Manager
|
|
Render render.Renderer
|
|
TaskDistributor tasks.TaskDistributor
|
|
CaptchaService v1.CaptchaService
|
|
AuthService *authv1.Auth
|
|
UserService v1.UserService
|
|
RoleService v1.RoleService
|
|
DepartmentService v1.DepartmentService
|
|
MenuService v1.MenuService
|
|
ConfigService v1.ConfigService
|
|
AuditLogService v1.AuditLogService
|
|
LoginLogService v1.LoginLogService
|
|
}
|
|
|
|
func WebApp(cfg Config) http.Handler {
|
|
app := chi.NewRouter()
|
|
|
|
app.Use(middleware.RequestID)
|
|
app.Use(middleware.RealIP)
|
|
// r.Use(mid.Logger)
|
|
app.Use(middleware.Recoverer)
|
|
|
|
staticServer := http.FileServer(http.FS(assets.FS))
|
|
app.Handle("/assets/*", http.StripPrefix("/assets", staticServer))
|
|
|
|
uploadServer := http.FileServer(http.Dir("./public/"))
|
|
app.Handle("/public/*", http.StripPrefix("/public", uploadServer))
|
|
|
|
app.Group(func(r chi.Router) {
|
|
//r.Use(mid.NoSurf) // CSRF
|
|
//r.Use(mid.NoSurfContext) // CSRF Store Context
|
|
r.Use(mid.LoadSession(cfg.Sm)) // Session
|
|
|
|
captcha.Routes(r, captcha.Config{
|
|
Conf: cfg.Conf,
|
|
Render: cfg.Render,
|
|
CaptchaService: cfg.CaptchaService,
|
|
})
|
|
|
|
upload.Routes(r, upload.Config{
|
|
Conf: cfg.Conf,
|
|
Log: cfg.Log,
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
TaskDistributor: cfg.TaskDistributor,
|
|
MenuService: cfg.MenuService,
|
|
})
|
|
|
|
home.Routes(r, home.Config{
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
UserService: cfg.UserService,
|
|
MenuService: cfg.MenuService,
|
|
LoginLogService: cfg.LoginLogService,
|
|
})
|
|
|
|
auth.Routes(r, auth.Config{
|
|
Log: cfg.Log,
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
CaptchaService: cfg.CaptchaService,
|
|
AuthService: cfg.AuthService,
|
|
UserService: cfg.UserService,
|
|
MenuService: cfg.MenuService,
|
|
})
|
|
|
|
r.Route("/system", func(r chi.Router) {
|
|
|
|
r.Use(mid.Authorize(cfg.Sm, cfg.MenuService))
|
|
|
|
user.Routes(r, user.Config{
|
|
Log: cfg.Log,
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
TaskDistributor: cfg.TaskDistributor,
|
|
UserService: cfg.UserService,
|
|
RoleService: cfg.RoleService,
|
|
MenuService: cfg.MenuService,
|
|
DepartmentService: cfg.DepartmentService,
|
|
})
|
|
|
|
role.Routes(r, role.Config{
|
|
Log: cfg.Log,
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
TaskDistributor: cfg.TaskDistributor,
|
|
RoleService: cfg.RoleService,
|
|
MenuService: cfg.MenuService,
|
|
})
|
|
|
|
menu.Routes(r, menu.Config{
|
|
Log: cfg.Log,
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
TaskDistributor: cfg.TaskDistributor,
|
|
MenuService: cfg.MenuService,
|
|
})
|
|
|
|
department.Routes(r, department.Config{
|
|
Log: cfg.Log,
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
TaskDistributor: cfg.TaskDistributor,
|
|
MenuService: cfg.MenuService,
|
|
DepartmentService: cfg.DepartmentService,
|
|
})
|
|
|
|
configapp.Routes(r, configapp.Config{
|
|
Log: cfg.Log,
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
TaskDistributor: cfg.TaskDistributor,
|
|
MenuService: cfg.MenuService,
|
|
ConfigService: cfg.ConfigService,
|
|
})
|
|
|
|
loginlog.Routes(r, loginlog.Config{
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
MenuService: cfg.MenuService,
|
|
LoginLogService: cfg.LoginLogService,
|
|
})
|
|
|
|
audit.Routes(r, audit.Config{
|
|
Sm: cfg.Sm,
|
|
Render: cfg.Render,
|
|
MenuService: cfg.MenuService,
|
|
AuditLogService: cfg.AuditLogService,
|
|
})
|
|
})
|
|
})
|
|
|
|
return app
|
|
}
|