This commit is contained in:
oneao committed 2026-01-28 17:19:41 +08:00
1 parent 5ca04f85ca
commit d9c49b34db
17 files changed
+452 -175

No files matched your search

@@ -3,10 +3,8 @@ package middleware
import (
"allapp/utils/jwtx"
"allapp/utils/pathx"
"allapp/utils/redisx"
"allapp/utils/response"
"context"
"strconv"
"strings"
"github.com/cloudwego/hertz/pkg/app"
@@ -19,7 +17,6 @@ type ctxKeyUser struct{}
type ContextUser struct {
UserID int64
DeviceUUID string
SpaceID int64
}
// Auth 中间件,支持 header 中传 spaceid 并校验权限
@@ -50,27 +47,9 @@ func Auth() app.HandlerFunc {
userID := verifyToken.UserID
// 获取 header 中的 spaceid
spaceIDStr := strings.TrimSpace(string(c.GetHeader("X-Space-Id")))
spaceID, err := strconv.ParseInt(spaceIDStr, 10, 64)
if err != nil || spaceID == 0 {
response.Fail(c).Code(response.HttpCode.ErrSpaceRequired).Message("请先选择空间").Send()
c.Abort()
return
}
// 判断用户是否在该空间
inSpace, err := redisx.InSpace(ctx, userID, spaceID)
if err != nil || !inSpace {
response.Fail(c).Code(response.HttpCode.ErrSpaceRequired).Message("无权限访问该空间").Send()
c.Abort()
return
}
// 设置 context
user := &ContextUser{
UserID: userID,
SpaceID: spaceID,
UserID: userID,
}
ctx = setContextUser(ctx, user)
@@ -92,11 +71,6 @@ func GetUserID(ctx context.Context) int64 {
return GetContextUser(ctx).UserID
}
// GetSpaceID 从 context 获取当前 spaceid
func GetSpaceID(ctx context.Context) int64 {
return GetContextUser(ctx).SpaceID
}
// 内部中间件设置 ContextUser
func setContextUser(ctx context.Context, user *ContextUser) context.Context {
return context.WithValue(ctx, ctxKeyUser{}, user)