This commit is contained in:
withchao 2023-01-12 17:52:14 +08:00
parent 6bd62610dd
commit 5e48231d51
4 changed files with 41 additions and 28 deletions

View File

@ -115,20 +115,9 @@ func (s *groupServer) Run() {
log.NewInfo("", "group rpc success") log.NewInfo("", "group rpc success")
} }
func OperationID(ctx context.Context) string {
s, _ := ctx.Value("operationID").(string)
return s
}
func OpUserID(ctx context.Context) string {
s, _ := ctx.Value("opUserID").(string)
return s
}
func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq) (*pbGroup.CreateGroupResp, error) { func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq) (*pbGroup.CreateGroupResp, error) {
resp := &pbGroup.CreateGroupResp{GroupInfo: &open_im_sdk.GroupInfo{}} resp := &pbGroup.CreateGroupResp{GroupInfo: &open_im_sdk.GroupInfo{}}
if err := token_verify.CheckAccessV2(ctx, req.OpUserID, req.OwnerUserID); err != nil { if err := token_verify.CheckAccessV3(ctx, req.OwnerUserID); err != nil {
return nil, err return nil, err
} }
var groupOwnerNum int var groupOwnerNum int
@ -236,7 +225,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJoinedGroupListReq) (*pbGroup.GetJoinedGroupListResp, error) { func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJoinedGroupListReq) (*pbGroup.GetJoinedGroupListResp, error) {
resp := &pbGroup.GetJoinedGroupListResp{} resp := &pbGroup.GetJoinedGroupListResp{}
if err := token_verify.CheckAccessV2(ctx, req.OpUserID, req.FromUserID); err != nil { if err := token_verify.CheckAccessV3(ctx, req.FromUserID); err != nil {
return nil, err return nil, err
} }
joinedGroupList, err := rocksCache.GetJoinedGroupIDListFromCache(ctx, req.FromUserID) joinedGroupList, err := rocksCache.GetJoinedGroupIDListFromCache(ctx, req.FromUserID)
@ -741,7 +730,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup
chat.GroupApplicationRejectedNotification(req) chat.GroupApplicationRejectedNotification(req)
} else { } else {
//return nil, utils.Wrap(constant.ErrArgs, "") //return nil, utils.Wrap(constant.ErrArgs, "")
return nil, constant.ErrArgs.Warp() return nil, constant.ErrArgs.Wrap()
} }
return resp, nil return resp, nil
} }

View File

@ -7,6 +7,7 @@ import (
"fmt" "fmt"
"github.com/pkg/errors" "github.com/pkg/errors"
"gorm.io/gorm" "gorm.io/gorm"
"strings"
) )
type ErrInfo struct { type ErrInfo struct {
@ -23,20 +24,8 @@ func (e *ErrInfo) Code() int32 {
return e.ErrCode return e.ErrCode
} }
func (e *ErrInfo) Msg(msg string) *ErrInfo { func (e *ErrInfo) Wrap(msg ...string) error {
return &ErrInfo{ return errors.Wrap(e, strings.Join(msg, "--"))
ErrCode: e.ErrCode,
ErrMsg: msg,
DetailErrMsg: e.DetailErrMsg,
}
}
func (e *ErrInfo) Warp() error {
return errors.WithStack(e)
}
func (e *ErrInfo) WarpMessage(msg string) error {
return errors.WithMessage(e, "")
} }
func NewErrNetwork(err error) error { func NewErrNetwork(err error) error {

View File

@ -5,6 +5,7 @@ import (
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/constant"
commonDB "Open_IM/pkg/common/db" commonDB "Open_IM/pkg/common/db"
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
"Open_IM/pkg/common/tools"
"Open_IM/pkg/common/trace_log" "Open_IM/pkg/common/trace_log"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
@ -142,6 +143,13 @@ func IsManagerUserID(OpUserID string) bool {
} }
} }
func CheckManagerUserID(ctx context.Context) error {
if utils.IsContain(tools.OpUserID(ctx), config.Config.Manager.AppManagerUid) {
return nil
}
return constant.ErrIdentity.Wrap(utils.GetSelfFuncName())
}
func CheckAccess(ctx context.Context, OpUserID string, OwnerUserID string) bool { func CheckAccess(ctx context.Context, OpUserID string, OwnerUserID string) bool {
if utils.IsContain(OpUserID, config.Config.Manager.AppManagerUid) { if utils.IsContain(OpUserID, config.Config.Manager.AppManagerUid) {
return true return true
@ -165,6 +173,20 @@ func CheckAccessV2(ctx context.Context, OpUserID string, OwnerUserID string) (er
return utils.Wrap(constant.ErrIdentity, open_utils.GetSelfFuncName()) return utils.Wrap(constant.ErrIdentity, open_utils.GetSelfFuncName())
} }
func CheckAccessV3(ctx context.Context, OwnerUserID string) (err error) {
opUserID := tools.OpUserID(ctx)
defer func() {
trace_log.SetCtxInfo(ctx, utils.GetFuncName(1), err, "OpUserID", opUserID, "OwnerUserID", OwnerUserID)
}()
if utils.IsContain(opUserID, config.Config.Manager.AppManagerUid) {
return nil
}
if opUserID == OwnerUserID {
return nil
}
return utils.Wrap(constant.ErrIdentity, open_utils.GetSelfFuncName())
}
func GetUserIDFromToken(token string, operationID string) (bool, string, string) { func GetUserIDFromToken(token string, operationID string) (bool, string, string) {
claims, err := ParseToken(token, operationID) claims, err := ParseToken(token, operationID)
if err != nil { if err != nil {

13
pkg/common/tools/op.go Normal file
View File

@ -0,0 +1,13 @@
package tools
import "context"
func OperationID(ctx context.Context) string {
s, _ := ctx.Value("operationID").(string)
return s
}
func OpUserID(ctx context.Context) string {
s, _ := ctx.Value("opUserID").(string)
return s
}