81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
package router
|
|
|
|
import (
|
|
"net/http"
|
|
"os"
|
|
"path/filepath"
|
|
"server/internal/config"
|
|
"server/internal/handler"
|
|
"server/internal/middleware"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
"go.uber.org/fx"
|
|
)
|
|
|
|
type Handlers struct {
|
|
fx.In
|
|
// auth
|
|
JwtMiddleware *middleware.JWTMiddleware
|
|
AuthMiddleware *middleware.AuthMiddleware
|
|
LoggerMiddleware *middleware.LoggerMiddleware
|
|
// system
|
|
SysUserHandler *handler.SysUserHandler
|
|
SysRoleHandler *handler.SysRoleHandler
|
|
SysMenuHandler *handler.SysMenuHandler
|
|
SysApiHandler *handler.SysApiHandler
|
|
SysFileHandler *handler.SysFileHandler
|
|
SysPostHandler *handler.SysPostHandler
|
|
CategoryHandler *handler.CategoryHandler
|
|
// web
|
|
PostHandler *handler.PostHandler
|
|
WebHandler *handler.WebHandler
|
|
}
|
|
|
|
func setupStaticFiles(r chi.Router) {
|
|
rootDir, _ := os.Getwd()
|
|
|
|
uploadsDir := filepath.Join(rootDir, "uploads")
|
|
|
|
r.Handle("/static/*", http.StripPrefix("/static/", http.FileServer(http.Dir(uploadsDir))))
|
|
}
|
|
|
|
func NewRouter(m Handlers) *chi.Mux {
|
|
r := chi.NewRouter()
|
|
|
|
r.Use(m.LoggerMiddleware.Middleware)
|
|
|
|
if config.IsDev() {
|
|
// 开放静态目录
|
|
setupStaticFiles(r)
|
|
}
|
|
|
|
r.Route("/api/admin", func(r chi.Router) {
|
|
r.Post("/auth/login", m.SysUserHandler.Login)
|
|
r.Post("/auth/refresh-token", m.SysUserHandler.RefreshToken)
|
|
r.Post("/auth/logout", m.SysUserHandler.Logout)
|
|
|
|
r.Group(func(r chi.Router) {
|
|
r.Use(m.JwtMiddleware.Middleware)
|
|
r.Use(m.AuthMiddleware.Middleware)
|
|
|
|
SetupSysUserRoutes(r, m.SysUserHandler)
|
|
SetupSysRoleRoutes(r, m.SysRoleHandler)
|
|
SetupSysMenuRoutes(r, m.SysMenuHandler)
|
|
SetupSysApiRoutes(r, m.SysApiHandler)
|
|
SetupSysFileRoutes(r, m.SysFileHandler)
|
|
SetupCategoryRoutes(r, m.CategoryHandler)
|
|
SetupSysPostRoutes(r, m.SysPostHandler)
|
|
})
|
|
|
|
})
|
|
|
|
// web api
|
|
r.Route("/api", func(r chi.Router) {
|
|
r.Group(func(r chi.Router) {
|
|
SetupPostRoutes(r, m.PostHandler)
|
|
SetupWebRoutes(r, m.WebHandler)
|
|
})
|
|
})
|
|
return r
|
|
}
|