|
|
|
package routes
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
|
|
|
|
"gofaster/internal/auth/controller"
|
|
|
|
"gofaster/internal/auth/repository"
|
|
|
|
"gofaster/internal/auth/service"
|
|
|
|
"gofaster/internal/shared/middleware"
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
)
|
|
|
|
|
|
|
|
// RegisterAuthRoutes 注册认证相关路由
|
|
|
|
func RegisterAuthRoutes(router *gin.RouterGroup, db *gorm.DB, jwtSecret string) {
|
|
|
|
// 初始化仓库
|
|
|
|
userRepo := repository.NewUserRepository(db)
|
|
|
|
passwordPolicyRepo := repository.NewPasswordPolicyRepository(db)
|
|
|
|
passwordHistoryRepo := repository.NewPasswordHistoryRepository(db)
|
|
|
|
passwordResetRepo := repository.NewPasswordResetRepository(db)
|
|
|
|
// captchaRepo := repository.NewCaptchaRepository(db) // 暂时注释掉,因为验证码生成逻辑在controller中
|
|
|
|
|
|
|
|
// 初始化服务
|
|
|
|
userService := service.NewUserService(userRepo, db)
|
|
|
|
captchaRepo := repository.NewCaptchaRepository(db)
|
|
|
|
authService := service.NewAuthService(userRepo, captchaRepo)
|
|
|
|
passwordService := service.NewPasswordService(
|
|
|
|
userRepo,
|
|
|
|
passwordPolicyRepo,
|
|
|
|
passwordHistoryRepo,
|
|
|
|
passwordResetRepo,
|
|
|
|
)
|
|
|
|
|
|
|
|
// 初始化控制器
|
|
|
|
userController := controller.NewUserController(userService)
|
|
|
|
authController := controller.NewAuthController(authService)
|
|
|
|
passwordController := controller.NewPasswordController(passwordService, userService)
|
|
|
|
|
|
|
|
// 公开路由(无需认证)
|
|
|
|
public := router.Group("/auth")
|
|
|
|
{
|
|
|
|
public.POST("/login", authController.Login)
|
|
|
|
public.GET("/captcha", authController.GenerateCaptcha) // 添加验证码路由
|
|
|
|
// public.POST("/register", userController.Register) // 暂时注释掉,因为Register方法不存在
|
|
|
|
public.GET("/password-policy", passwordController.GetPasswordPolicy)
|
|
|
|
public.POST("/validate-password", passwordController.ValidatePassword)
|
|
|
|
}
|
|
|
|
|
|
|
|
// 需要认证的路由
|
|
|
|
auth := router.Group("/auth")
|
|
|
|
auth.Use(middleware.JWTAuth())
|
|
|
|
{
|
|
|
|
auth.POST("/logout", authController.Logout)
|
|
|
|
// auth.GET("/profile", userController.GetProfile) // 暂时注释掉,因为GetProfile方法不存在
|
|
|
|
// auth.PUT("/profile", userController.UpdateProfile) // 暂时注释掉,因为UpdateProfile方法不存在
|
|
|
|
auth.POST("/change-password", passwordController.ChangePassword)
|
|
|
|
auth.GET("/password-status", passwordController.CheckPasswordStatus)
|
|
|
|
auth.GET("/userinfo", authController.GetUserInfo) // 添加缺失的userinfo路由
|
|
|
|
}
|
|
|
|
|
|
|
|
// 管理员路由
|
|
|
|
admin := router.Group("/auth/admin")
|
|
|
|
admin.Use(middleware.JWTAuth(), middleware.PermissionMiddleware(db, "auth", "admin"))
|
|
|
|
{
|
|
|
|
admin.GET("/users", userController.ListUsers)
|
|
|
|
admin.POST("/users", userController.CreateUser)
|
|
|
|
admin.GET("/users/:id", userController.GetUser)
|
|
|
|
admin.PUT("/users/:id", userController.UpdateUser)
|
|
|
|
admin.DELETE("/users/:id", userController.DeleteUser)
|
|
|
|
admin.POST("/users/:id/reset-password", passwordController.ResetPassword)
|
|
|
|
admin.PUT("/password-policy", passwordController.UpdatePasswordPolicy)
|
|
|
|
}
|
|
|
|
|
|
|
|
// 临时测试路由 - 简化权限检查
|
|
|
|
testAdmin := router.Group("/auth/test-admin")
|
|
|
|
testAdmin.Use(middleware.JWTAuth()) // 只检查JWT,不检查权限
|
|
|
|
{
|
|
|
|
testAdmin.GET("/users", userController.ListUsers)
|
|
|
|
}
|
|
|
|
|
|
|
|
// 注册资源管理路由
|
|
|
|
RegisterResourceRoutes(router, db, jwtSecret)
|
|
|
|
|
|
|
|
// 注册权限管理路由
|
|
|
|
RegisterPermissionRoutes(router, db, jwtSecret)
|
|
|
|
|
|
|
|
// 注册角色管理路由
|
|
|
|
RegisterRoleRoutes(router, db, jwtSecret)
|
|
|
|
|
|
|
|
log.Printf("✅ 认证路由注册完成")
|
|
|
|
}
|