feat: 添加用户认证模块

- main.go: 初始化 User/Role 模型、UserRepository、AuthService 和 AuthHandler
- 添加 /auth/register、/auth/login、/auth/me 路由
- auth_handler.go: 新增 GetCurrentUser 接口获取当前用户信息
- .gitignore: 添加 .bitfun/ 目录忽略

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 10:25:50 +08:00
parent cea49bb685
commit 51a1202168
3 changed files with 46 additions and 1 deletions

View File

@@ -9,6 +9,7 @@ import (
"time"
"x-agents/server/internal/config"
"x-agents/server/internal/handler"
"x-agents/server/internal/middleware"
"x-agents/server/internal/model"
"x-agents/server/internal/repository"
"x-agents/server/internal/service"
@@ -70,13 +71,14 @@ func main() {
}
// 3. 自动迁移表
db.AutoMigrate(&model.DatabaseInfo{}, &model.SubTableInfo{}, &model.ModelInfo{}, &model.KnowledgeBase{}, &model.KnowledgeDocument{})
db.AutoMigrate(&model.DatabaseInfo{}, &model.SubTableInfo{}, &model.ModelInfo{}, &model.KnowledgeBase{}, &model.KnowledgeDocument{}, &model.User{}, &model.Role{})
// 4. 初始化 Repository
dbRepo := repository.NewDatabaseRepository(db)
subTableRepo := repository.NewSubTableRepository(db)
modelRepo := repository.NewModelRepository(db)
knowledgeRepo := repository.NewKnowledgeRepository(db)
userRepo := repository.NewUserRepository(db)
// 5. 初始化 Service
dbService := service.NewDatabaseService(dbRepo, subTableRepo)
@@ -88,6 +90,7 @@ func main() {
log.Printf("Warning: Failed to initialize upload service: %v (files will not be available)", err)
}
knowledgeService := service.NewKnowledgeService(knowledgeRepo, modelRepo, uploadService, cfg.PythonServiceURL, cfg.AICoreServiceAddr, cfg.MarkdownLocalPath)
authService := service.NewAuthService(cfg.JWTSecret, userRepo)
// 6. 初始化 Handler
dbHandler := handler.NewDatabaseHandler(dbService)
@@ -96,6 +99,7 @@ func main() {
modelHandler := handler.NewModelHandler(modelService)
systemHandler := handler.NewSystemHandler()
knowledgeHandler := handler.NewKnowledgeHandler(knowledgeService)
authHandler := handler.NewAuthHandler(authService)
var uploadHandler *handler.UploadHandler
if uploadService != nil {
uploadHandler = handler.NewUploadHandler(uploadService, knowledgeRepo)
@@ -144,6 +148,20 @@ func main() {
c.Next()
})
// 认证模块(无需登录)
authGroup := r.Group("/auth")
{
authGroup.POST("/register", authHandler.Register)
authGroup.POST("/login", authHandler.Login)
}
// 需要登录的认证模块
authProtectedGroup := r.Group("/auth")
authProtectedGroup.Use(middleware.Auth(cfg.JWTSecret))
{
authProtectedGroup.GET("/me", authHandler.GetCurrentUser)
}
// 数据库管理模块
databaseGroup := r.Group("/database")
{