feat: 增强令牌管理与客户端仓库集成

新增 ClientRepository 接口,用于管理客户端相关操作。
更新 Token 模型,加入版本号和过期时间字段,以提升令牌管理能力。
将 ClientRepo 集成到容器中,支持依赖注入。
重构 TokenService,采用 JWT 以增强安全性。
更新 Docker 配置,并清理多个文件中的空白字符。
This commit is contained in:
lan
2025-12-03 14:43:38 +08:00
parent e873c58af9
commit 4824a997dd
12 changed files with 1394 additions and 17 deletions

View File

@@ -30,6 +30,7 @@ type Container struct {
ProfileRepo repository.ProfileRepository
TextureRepo repository.TextureRepository
TokenRepo repository.TokenRepository
ClientRepo repository.ClientRepository
ConfigRepo repository.SystemConfigRepository
YggdrasilRepo repository.YggdrasilRepository
@@ -75,17 +76,28 @@ func NewContainer(
c.ProfileRepo = repository.NewProfileRepository(db)
c.TextureRepo = repository.NewTextureRepository(db)
c.TokenRepo = repository.NewTokenRepository(db)
c.ClientRepo = repository.NewClientRepository(db)
c.ConfigRepo = repository.NewSystemConfigRepository(db)
c.YggdrasilRepo = repository.NewYggdrasilRepository(db)
// 初始化SignatureService用于获取Yggdrasil私钥
signatureService := service.NewSignatureService(c.ProfileRepo, redisClient, logger)
// 获取Yggdrasil私钥并创建JWT服务
_, privateKey, err := signatureService.GetOrCreateYggdrasilKeyPair()
if err != nil {
logger.Fatal("获取Yggdrasil私钥失败", zap.Error(err))
}
yggdrasilJWT := auth.NewYggdrasilJWTService(privateKey, "carrotskin")
// 初始化Service注入缓存管理器
c.UserService = service.NewUserService(c.UserRepo, c.ConfigRepo, jwtService, redisClient, cacheManager, logger)
c.ProfileService = service.NewProfileService(c.ProfileRepo, c.UserRepo, cacheManager, logger)
c.TextureService = service.NewTextureService(c.TextureRepo, c.UserRepo, cacheManager, logger)
c.TokenService = service.NewTokenService(c.TokenRepo, c.ProfileRepo, logger)
// 使用JWT版本的TokenService
c.TokenService = service.NewTokenServiceJWT(c.TokenRepo, c.ClientRepo, c.ProfileRepo, yggdrasilJWT, logger)
// 初始化SignatureService
signatureService := service.NewSignatureService(c.ProfileRepo, redisClient, logger)
// 使用组合服务(内部包含认证、会话、序列化、证书服务)
c.YggdrasilService = service.NewYggdrasilServiceComposite(db, c.UserRepo, c.ProfileRepo, c.TokenRepo, c.YggdrasilRepo, signatureService, redisClient, logger)