u
This commit is contained in:
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)
|
||||
|
||||
@@ -45,3 +45,13 @@ func _listspaceusersMw() []app.HandlerFunc {
|
||||
// your code...
|
||||
return nil
|
||||
}
|
||||
|
||||
func _updateroleMw() []app.HandlerFunc {
|
||||
// your code...
|
||||
return nil
|
||||
}
|
||||
|
||||
func _updatespaceuserroleMw() []app.HandlerFunc {
|
||||
// your code...
|
||||
return nil
|
||||
}
|
||||
@@ -24,6 +24,7 @@ func Register(r *server.Hertz) {
|
||||
_space.POST("/exit", append(_exitspaceMw(), space.ExitSpace)...)
|
||||
_space.POST("/join", append(_joinspaceMw(), space.JoinSpace)...)
|
||||
_space.POST("/remove", append(_removespaceuserMw(), space.RemoveSpaceUser)...)
|
||||
_space.POST("/updateRole", append(_updatespaceuserroleMw(), space.UpdateSpaceUserRole)...)
|
||||
_space.POST("/users", append(_listspaceusersMw(), space.ListSpaceUsers)...)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user