package v1 import ( "git.lzcwy.cn/zhengchiliu/zt-online-game-backend/global" "git.lzcwy.cn/zhengchiliu/zt-online-game-backend/internal/dto" "git.lzcwy.cn/zhengchiliu/zt-online-game-backend/pkg/app" "git.lzcwy.cn/zhengchiliu/zt-online-game-backend/pkg/errcode" "git.lzcwy.cn/zhengchiliu/zt-online-game-backend/pkg/lzcwyjwt" "github.com/gin-gonic/gin" "time" // 标准库:计算令牌过期时间 ) // DevHandler 开发调试接口:便于跳过微信登录做联调。 // 路由仅在 RunMode=debug 时注册(见 routers.NewRouter),生产模式不存在该入口。 type DevHandler struct{} // NewDevHandler 创建调试 handler。 func NewDevHandler() *DevHandler { return &DevHandler{} } // Token 为指定用户直接签发一对令牌。 func (h *DevHandler) Token(c *gin.Context) { response := app.NewResponse(c) // 二次校验:即便路由被误注册到非 debug 环境,也要挡住。 if global.ServerSetting == nil || global.ServerSetting.RunMode != gin.DebugMode { response.ToErrorResponse(errcode.Forbidden) return } var request dto.DevTokenRequest if err := c.ShouldBindQuery(&request); err != nil { // 参数解析失败 response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } if request.UserID <= 0 { // 未指定:回落为 1 request.UserID = 1 } accessToken, refreshToken, err := lzcwyjwt.GenerateTokens(request.UserID) if err != nil { // 签发失败 response.ToErrorResponse(errcode.UnauthorizedTokenGenerate) return } response.ToResponse(dto.DevTokenResponse{ AccessToken: accessToken, RefreshToken: refreshToken, ExpireTime: time.Now().Unix() + int64(global.JWTSetting.AccessTokenExpire), }) }