refactor(auth): 优化设备登录逻辑,移除冗余代码并添加设备缓存
Build docker and publish / build (20.15.1) (push) Failing after 6m39s

feat(database): 添加用户算法和盐字段的迁移脚本

fix(subscribe): 修复服务器用户列表缓存问题,临时禁用缓存

style(model): 清理用户模型注释,简化代码结构

chore: 删除无用脚本和测试文件

docs: 添加用户绑定流程文档

perf(login): 优化设备登录性能,添加设备缓存键

fix(unbind): 修复设备解绑时的缓存清理逻辑

refactor(verify): 简化邮箱验证逻辑,移除冗余代码

build(docker): 更新Dockerfile配置,使用scratch基础镜像
This commit is contained in:
2025-10-28 20:46:21 -07:00
parent e6bd78aa76
commit 0f38b3fcd3
33 changed files with 226 additions and 1605 deletions
@@ -1,46 +0,0 @@
package app
import (
"strconv"
"github.com/gin-gonic/gin"
"github.com/perfect-panel/server/internal/svc"
"github.com/perfect-panel/server/pkg/logger"
"github.com/perfect-panel/server/pkg/result"
)
// Device WebSocket Handler
func DeviceWebSocketHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
return func(c *gin.Context) {
// 获取用户ID
userIDStr := c.Param("userid")
userID, err := strconv.ParseInt(userIDStr, 10, 64)
if err != nil {
logger.WithContext(c.Request.Context()).Error("[DeviceWebSocketHandler] Invalid user ID", logger.Field("userid", userIDStr), logger.Field("error", err.Error()))
result.ParamErrorResult(c, err)
return
}
// 获取设备号
deviceNumber := c.Param("device_number")
if deviceNumber == "" {
logger.WithContext(c.Request.Context()).Error("[DeviceWebSocketHandler] Device number is required")
result.ParamErrorResult(c, nil)
return
}
// 获取Authorization header作为session
authorization := c.GetHeader("Authorization")
if authorization == "" {
logger.WithContext(c.Request.Context()).Error("[DeviceWebSocketHandler] Authorization header is required")
result.ParamErrorResult(c, nil)
return
}
// 获取最大设备数量配置,默认为3
maxDevices := 3
// 使用设备管理器添加设备
svcCtx.DeviceManager.AddDevice(c.Writer, c.Request, authorization, userID, deviceNumber, maxDevices)
}
}
@@ -1,26 +0,0 @@
package user
import (
"github.com/gin-gonic/gin"
"github.com/perfect-panel/server/internal/logic/public/user"
"github.com/perfect-panel/server/internal/svc"
"github.com/perfect-panel/server/internal/types"
"github.com/perfect-panel/server/pkg/result"
)
// Bind Invite Code
func BindInviteCodeHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
return func(c *gin.Context) {
var req types.BindInviteCodeRequest
_ = c.ShouldBind(&req)
validateErr := svcCtx.Validate(&req)
if validateErr != nil {
result.ParamErrorResult(c, validateErr)
return
}
l := user.NewBindInviteCodeLogic(c.Request.Context(), svcCtx)
err := l.BindInviteCode(&req)
result.HttpResult(c, nil, err)
}
}