108 lines
4.8 KiB
Go
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)
|
|
}
|
|
} |