Files

108 lines
4.8 KiB
Go

package router
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
// setupAdminRoutes 配置后台管理路由
// 登录入口(需配置路径):
// - GET /my-secret-admin-123/login 登录页面
// - POST /my-secret-admin-123/login 登录验证
// - GET /my-secret-admin-123/captcha 验证码
//
// 后台管理路由(登录后访问):
// - GET /dashboard 后台首页(仪表盘)
// - GET /dashboard/home 后台首页
// - GET /dashboard/users 人员列表页
// - GET /dashboard/user/:id/resume 用户简历管理页
// - GET /dashboard/user/:id/portfolio 用户作品集管理页
// - GET /dashboard/user/:id/quiz 用户面试题库页
// - GET /dashboard/menus 菜单管理页
// - GET /dashboard/settings 系统设置页
// - GET /dashboard/logout 退出登录
func (r *Router) setupAdminRoutes(engine *gin.Engine) {
adminPath := r.cfg.Auth.AdminPath
if adminPath == "" {
adminPath = "/admin"
}
fmt.Printf("Setting up admin login routes at: %s\n", adminPath)
loginGroup := engine.Group(adminPath)
{
loginGroup.GET("/login", r.adminHandler.LoginPage)
loginGroup.POST("/login", r.adminHandler.Login)
loginGroup.GET("/captcha", r.adminHandler.Captcha)
}
dashboard := engine.Group("/dashboard")
dashboard.Use(r.adminHandler.AuthMiddleware())
{
dashboard.GET("/", r.adminHandler.HomePage)
dashboard.GET("/home", r.adminHandler.HomePage)
dashboard.GET("/users", r.adminHandler.UsersPage)
dashboard.GET("/user", func(c *gin.Context) {
c.Redirect(http.StatusMovedPermanently, "/dashboard/users")
})
dashboard.GET("/resumes", r.adminHandler.ResumesPage)
dashboard.GET("/resume/add", r.adminHandler.ResumeAddPage)
dashboard.GET("/resume/:id/edit", r.adminHandler.ResumeEditPageWithoutUser)
dashboard.GET("/user/:id/resume", r.adminHandler.UserResumePage)
dashboard.GET("/user/:id/resume/:resume_id/edit", r.adminHandler.ResumeEditPage)
dashboard.GET("/portfolios", r.adminHandler.PortfoliosPage)
dashboard.GET("/user/:id/portfolio", r.adminHandler.UserPortfolioPage)
dashboard.GET("/portfolio/add", r.adminHandler.PortfolioAddPage)
dashboard.GET("/portfolio/:id/edit", r.adminHandler.PortfolioEditPage)
dashboard.GET("/quiz", r.adminHandler.QuizPage)
dashboard.GET("/user/:id/quiz", r.adminHandler.UserQuizPage)
dashboard.GET("/user/:id/quiz/generate", r.adminHandler.QuizGeneratePage)
dashboard.GET("/user/:id/quiz/record/:record_id", r.adminHandler.QuizRecordDetailPage)
dashboard.POST("/api/quiz/favorite/:id/toggle", r.adminHandler.ToggleFavoriteAPI)
dashboard.DELETE("/api/quiz/favorite/:id", r.resumeHandler.DeleteFavoriteQuestionAPI)
dashboard.GET("/settings", r.adminHandler.SettingsPage)
dashboard.GET("/logout", r.adminHandler.Logout)
dashboard.GET("/api/user/:id", r.resumeHandler.GetUserAPI)
dashboard.POST("/api/user", r.resumeHandler.CreateUserAPI)
dashboard.PUT("/api/user/:id", r.resumeHandler.UpdateUserAPI)
dashboard.DELETE("/api/user/:id", r.resumeHandler.DeleteUserAPI)
dashboard.GET("/api/users", r.resumeHandler.GetAllUsersAPI)
dashboard.GET("/api/settings", r.adminHandler.GetSettingsAPI)
dashboard.POST("/api/settings", r.adminHandler.UpdateSettingsAPI)
dashboard.POST("/api/settings/logo", r.adminHandler.UploadLogoAPI)
dashboard.GET("/api/settings/system-info", r.adminHandler.SystemInfoAPI)
dashboard.GET("/api/settings/login-history", r.adminHandler.LoginHistoryAPI)
dashboard.POST("/api/portfolio", r.resumeHandler.CreatePortfolioItemAPI)
dashboard.GET("/api/portfolio/:id", r.resumeHandler.GetPortfolioItemAPI)
dashboard.PUT("/api/portfolio/:id", r.resumeHandler.UpdatePortfolioItemAPI)
dashboard.DELETE("/api/portfolio/:id", r.resumeHandler.DeletePortfolioItemAPI)
dashboard.POST("/api/resume/create", r.resumeHandler.AdminCreateResumeAPI)
dashboard.POST("/api/resume/generate-from-document", r.resumeHandler.GenerateResumeFromDocumentAPI)
dashboard.GET("/api/resume/:id", r.resumeHandler.GetResumeByIDAPI)
dashboard.PUT("/api/resume/:id", r.resumeHandler.UpdateResumeByIDAPI)
dashboard.PUT("/api/resume/:id/show_in_home", r.resumeHandler.UpdateResumeShowInHomeAPI)
dashboard.PUT("/api/resume/:id/password", r.resumeHandler.UpdateResumePasswordAPI)
dashboard.PUT("/api/resume/:id/user", r.resumeHandler.UpdateResumeUserIDAPI)
dashboard.DELETE("/api/resume/:id", r.resumeHandler.DeleteResumeAPI)
dashboard.GET("/api/search", r.adminHandler.SearchAPI)
dashboard.GET("/api/notifications", r.adminHandler.GetNotificationsAPI)
dashboard.POST("/api/notifications/:id/read", r.adminHandler.MarkNotificationAsReadAPI)
dashboard.POST("/api/notifications/read-all", r.adminHandler.MarkAllNotificationsAsReadAPI)
dashboard.DELETE("/api/notifications", r.adminHandler.DeleteAllNotificationsAPI)
dashboard.GET("/api/notifications/unread-count", r.adminHandler.GetUnreadNotificationCountAPI)
}
}