2025-10-24 00:09:45 +08:00
|
|
|
|
package server
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
adminctl "networkDev/controllers/admin"
|
2025-10-26 03:05:27 +08:00
|
|
|
|
"networkDev/utils"
|
2025-10-26 14:48:02 +08:00
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
2025-10-24 00:09:45 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// RegisterAdminRoutes 注册管理员后台相关路由
|
|
|
|
|
|
// - /admin/login: 支持GET渲染登录页、POST提交登录
|
|
|
|
|
|
// - /admin/logout: 管理员退出登录
|
|
|
|
|
|
// - /admin/dashboard: 管理员仪表盘(示例)
|
|
|
|
|
|
// - /admin/fragment/*: 布局内动态片段加载
|
|
|
|
|
|
// - /admin/api/settings*: 设置接口(查询/更新)
|
2025-10-26 14:48:02 +08:00
|
|
|
|
func RegisterAdminRoutes(router *gin.Engine) {
|
2025-10-24 00:09:45 +08:00
|
|
|
|
// /admin 根与前缀统一入口:根据是否登录跳转
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin", adminctl.AdminIndexHandler)
|
|
|
|
|
|
router.GET("/admin/", adminctl.AdminIndexHandler)
|
2025-10-24 00:09:45 +08:00
|
|
|
|
|
|
|
|
|
|
// Admin 认证相关路由
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/login", adminctl.LoginPageHandler)
|
|
|
|
|
|
router.POST("/admin/login", adminctl.LoginHandler) // CSRF验证在控制器内部处理
|
2025-10-24 00:09:45 +08:00
|
|
|
|
|
|
|
|
|
|
// 退出登录(无需拦截,幂等清理)
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.POST("/admin/logout", adminctl.LogoutHandler)
|
2025-10-24 00:09:45 +08:00
|
|
|
|
|
2025-10-24 03:08:43 +08:00
|
|
|
|
// 验证码生成路由(无需认证)
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/captcha", adminctl.CaptchaHandler)
|
2025-10-24 03:08:43 +08:00
|
|
|
|
|
2025-10-26 03:05:27 +08:00
|
|
|
|
// CSRF令牌获取API(无需认证,但需要在登录页面等地方获取)
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/api/csrf-token", func(c *gin.Context) {
|
|
|
|
|
|
// 生成新的CSRF令牌
|
|
|
|
|
|
token, err := utils.GenerateCSRFToken()
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
c.JSON(500, gin.H{"success": false, "message": "生成CSRF令牌失败"})
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 设置令牌到Cookie和响应头
|
|
|
|
|
|
utils.SetCSRFToken(c, token)
|
|
|
|
|
|
|
|
|
|
|
|
// 返回令牌给前端
|
|
|
|
|
|
c.JSON(200, gin.H{
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"message": "CSRF令牌生成成功",
|
|
|
|
|
|
"csrf_token": token,
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
2025-10-26 03:05:27 +08:00
|
|
|
|
|
2025-10-24 00:09:45 +08:00
|
|
|
|
// 后台布局页(需要管理员认证)
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/layout", adminctl.AdminAuthRequired(), adminctl.AdminLayoutHandler)
|
2025-10-24 00:09:45 +08:00
|
|
|
|
|
|
|
|
|
|
// 片段路由(需要管理员认证)
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/dashboard", adminctl.AdminAuthRequired(), adminctl.DashboardFragmentHandler)
|
|
|
|
|
|
router.GET("/admin/user", adminctl.AdminAuthRequired(), adminctl.UserFragmentHandler)
|
|
|
|
|
|
router.GET("/admin/settings", adminctl.AdminAuthRequired(), adminctl.SettingsFragmentHandler)
|
|
|
|
|
|
router.GET("/admin/apps", adminctl.AdminAuthRequired(), adminctl.AppsFragmentHandler)
|
|
|
|
|
|
router.GET("/admin/apis", adminctl.AdminAuthRequired(), adminctl.APIFragmentHandler)
|
|
|
|
|
|
router.GET("/admin/variables", adminctl.AdminAuthRequired(), adminctl.VariableFragmentHandler)
|
2025-10-26 00:08:55 +08:00
|
|
|
|
|
|
|
|
|
|
// 系统信息API(用于仪表盘定时刷新)
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/api/system/info", adminctl.AdminAuthRequired(), adminctl.SystemInfoHandler)
|
2025-10-24 00:09:45 +08:00
|
|
|
|
|
2025-10-26 11:57:31 +08:00
|
|
|
|
// 仪表盘统计数据API
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/api/dashboard/stats", adminctl.AdminAuthRequired(), adminctl.DashboardStatsHandler)
|
2025-10-26 11:57:31 +08:00
|
|
|
|
|
2025-10-24 00:09:45 +08:00
|
|
|
|
// 个人资料API
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/api/user/profile", adminctl.AdminAuthRequired(), adminctl.UserProfileQueryHandler)
|
|
|
|
|
|
router.POST("/admin/api/user/profile/update", adminctl.AdminAuthRequired(), adminctl.UserProfileUpdateHandler)
|
|
|
|
|
|
router.POST("/admin/api/user/password", adminctl.AdminAuthRequired(), adminctl.UserPasswordUpdateHandler)
|
2025-10-26 00:08:55 +08:00
|
|
|
|
|
|
|
|
|
|
// 系统设置API
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/api/settings", adminctl.AdminAuthRequired(), adminctl.SettingsQueryHandler)
|
|
|
|
|
|
router.POST("/admin/api/settings/update", adminctl.AdminAuthRequired(), adminctl.SettingsUpdateHandler)
|
2025-10-24 00:09:45 +08:00
|
|
|
|
|
|
|
|
|
|
// 应用管理API
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/api/apps/list", adminctl.AdminAuthRequired(), adminctl.AppsListHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/create", adminctl.AdminAuthRequired(), adminctl.AppCreateHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/update", adminctl.AdminAuthRequired(), adminctl.AppUpdateHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/delete", adminctl.AdminAuthRequired(), adminctl.AppDeleteHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/batch_delete", adminctl.AdminAuthRequired(), adminctl.AppsBatchDeleteHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/batch_update_status", adminctl.AdminAuthRequired(), adminctl.AppsBatchUpdateStatusHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/reset_secret", adminctl.AdminAuthRequired(), adminctl.AppResetSecretHandler)
|
|
|
|
|
|
router.GET("/admin/api/apps/get_app_data", adminctl.AdminAuthRequired(), adminctl.AppGetAppDataHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/update_app_data", adminctl.AdminAuthRequired(), adminctl.AppUpdateAppDataHandler)
|
|
|
|
|
|
router.GET("/admin/api/apps/get_announcement", adminctl.AdminAuthRequired(), adminctl.AppGetAnnouncementHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/update_announcement", adminctl.AdminAuthRequired(), adminctl.AppUpdateAnnouncementHandler)
|
|
|
|
|
|
router.GET("/admin/api/apps/get_multi_config", adminctl.AdminAuthRequired(), adminctl.AppGetMultiConfigHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/update_multi_config", adminctl.AdminAuthRequired(), adminctl.AppUpdateMultiConfigHandler)
|
|
|
|
|
|
router.GET("/admin/api/apps/get_bind_config", adminctl.AdminAuthRequired(), adminctl.AppGetBindConfigHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/update_bind_config", adminctl.AdminAuthRequired(), adminctl.AppUpdateBindConfigHandler)
|
|
|
|
|
|
router.GET("/admin/api/apps/get_register_config", adminctl.AdminAuthRequired(), adminctl.AppGetRegisterConfigHandler)
|
|
|
|
|
|
router.POST("/admin/api/apps/update_register_config", adminctl.AdminAuthRequired(), adminctl.AppUpdateRegisterConfigHandler)
|
2025-10-24 01:48:54 +08:00
|
|
|
|
|
2025-10-25 01:43:03 +08:00
|
|
|
|
// API接口管理API
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/api/apis/list", adminctl.AdminAuthRequired(), adminctl.APIListHandler)
|
|
|
|
|
|
router.POST("/admin/api/apis/update", adminctl.AdminAuthRequired(), adminctl.APIUpdateHandler)
|
|
|
|
|
|
router.GET("/admin/api/apis/apps", adminctl.AdminAuthRequired(), adminctl.APIGetAppsHandler)
|
|
|
|
|
|
router.GET("/admin/api/apis/types", adminctl.AdminAuthRequired(), adminctl.APIGetTypesHandler)
|
|
|
|
|
|
router.POST("/admin/api/apis/generate_keys", adminctl.AdminAuthRequired(), adminctl.APIGenerateKeysHandler)
|
2025-10-24 00:09:45 +08:00
|
|
|
|
|
2025-10-26 00:08:55 +08:00
|
|
|
|
// 变量管理API
|
2025-10-26 14:48:02 +08:00
|
|
|
|
router.GET("/admin/variable/list", adminctl.AdminAuthRequired(), adminctl.VariableListHandler)
|
|
|
|
|
|
router.GET("/admin/variable/apps", adminctl.AdminAuthRequired(), adminctl.VariableGetAppsHandler)
|
|
|
|
|
|
router.POST("/admin/variable/create", adminctl.AdminAuthRequired(), adminctl.VariableCreateHandler)
|
|
|
|
|
|
router.POST("/admin/variable/update", adminctl.AdminAuthRequired(), adminctl.VariableUpdateHandler)
|
|
|
|
|
|
router.POST("/admin/variable/delete", adminctl.AdminAuthRequired(), adminctl.VariableDeleteHandler)
|
|
|
|
|
|
router.POST("/admin/variable/batch_delete", adminctl.AdminAuthRequired(), adminctl.VariablesBatchDeleteHandler)
|
2025-10-24 00:09:45 +08:00
|
|
|
|
}
|