From 9106e70b375452f871ae81c958924285e911b36e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 7 Jun 2022 10:13:19 +0800 Subject: [PATCH 1/2] group administrator access --- cmd/open_im_api/main.go | 3 ++- internal/rpc/group/group.go | 26 +++++++++++++------------- pkg/common/token_verify/jwt_token.go | 19 +++++++++++++++++++ 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 8fbc78576..af2bab6dc 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -89,6 +89,7 @@ func main() { groupRouterGroup.POST("/mute_group", group.MuteGroup) groupRouterGroup.POST("/cancel_mute_group", group.CancelMuteGroup) groupRouterGroup.POST("/set_group_member_nickname", group.SetGroupMemberNickname) + } superGroupRouterGroup := r.Group("/super_group") { @@ -101,6 +102,7 @@ func main() { authRouterGroup.POST("/user_register", apiAuth.UserRegister) //1 authRouterGroup.POST("/user_token", apiAuth.UserToken) //1 authRouterGroup.POST("/parse_token", apiAuth.ParseToken) //1 + authRouterGroup.POST("/force_logout", apiAuth.ForceLogout) //1 } //Third service thirdGroup := r.Group("/third") @@ -130,7 +132,6 @@ func main() { managementGroup.POST("/get_all_users_uid", manage.GetAllUsersUid) //1 managementGroup.POST("/account_check", manage.AccountCheck) //1 managementGroup.POST("/get_users_online_status", manage.GetUsersOnlineStatus) //1 - } //Conversation conversationGroup := r.Group("/conversation") diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 398d5982c..d544cb04f 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -1526,19 +1526,19 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil } - mutedInfo, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupID, req.UserID) - if err != nil { - errMsg := req.OperationID + " GetGroupMemberInfoByGroupIDAndUserID failed " + req.GroupID + req.OpUserID + err.Error() - return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil - } - if mutedInfo.RoleLevel == constant.GroupOwner && opFlag != 1 { - errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupOwner " + req.GroupID + req.OpUserID + err.Error() - return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil - } - if mutedInfo.RoleLevel == constant.GroupAdmin && opFlag == 3 { - errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.OpUserID + err.Error() - return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil - } + //mutedInfo, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupID, req.) + //if err != nil { + // errMsg := req.OperationID + " GetGroupMemberInfoByGroupIDAndUserID failed " + req.GroupID + req.OpUserID + err.Error() + // return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil + //} + //if mutedInfo.RoleLevel == constant.GroupOwner && opFlag != 1 { + // errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupOwner " + req.GroupID + req.OpUserID + err.Error() + // return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil + //} + //if mutedInfo.RoleLevel == constant.GroupAdmin && opFlag == 3 { + // errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.OpUserID + err.Error() + // return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil + //} err = imdb.UpdateGroupInfoDefaultZero(req.GroupID, map[string]interface{}{"status": constant.GroupOk}) if err != nil { diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 08ff786aa..f1e95bba7 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -37,6 +37,25 @@ func BuildClaims(uid, platform string, ttl int64) Claims { }} } +func DeleteToken(userID string, platformID int) error { + m, err := commonDB.DB.GetTokenMapByUidPid(userID, constant.PlatformIDToName(platformID)) + if err != nil && err != redis.ErrNil { + return utils.Wrap(err, "") + } + var deleteTokenKey []string + for k, v := range m { + _, err = GetClaimFromToken(k) + if err != nil || v != constant.NormalToken { + deleteTokenKey = append(deleteTokenKey, k) + } + } + if len(deleteTokenKey) != 0 { + err = commonDB.DB.DeleteTokenByUidPid(userID, platformID, deleteTokenKey) + return utils.Wrap(err, "") + } + return nil +} + func CreateToken(userID string, platformID int) (string, int64, error) { claims := BuildClaims(userID, constant.PlatformIDToName(platformID), config.Config.TokenPolicy.AccessExpire) token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) From 3639f943bfe879ae33562cd275e9d95a34cb6df4 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 7 Jun 2022 10:20:56 +0800 Subject: [PATCH 2/2] group administrator access --- internal/rpc/group/group.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index d544cb04f..e9452a813 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -1487,19 +1487,19 @@ func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil } - mutedInfo, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupID, req.UserID) - if err != nil { - errMsg := req.OperationID + " GetGroupMemberInfoByGroupIDAndUserID failed " + req.GroupID + req.OpUserID + err.Error() - return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil - } - if mutedInfo.RoleLevel == constant.GroupOwner && opFlag != 1 { - errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupOwner " + req.GroupID + req.OpUserID + err.Error() - return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil - } - if mutedInfo.RoleLevel == constant.GroupAdmin && opFlag == 3 { - errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.OpUserID + err.Error() - return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil - } + //mutedInfo, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupID, req.UserID) + //if err != nil { + // errMsg := req.OperationID + " GetGroupMemberInfoByGroupIDAndUserID failed " + req.GroupID + req.OpUserID + err.Error() + // return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil + //} + //if mutedInfo.RoleLevel == constant.GroupOwner && opFlag != 1 { + // errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupOwner " + req.GroupID + req.OpUserID + err.Error() + // return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil + //} + //if mutedInfo.RoleLevel == constant.GroupAdmin && opFlag == 3 { + // errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.OpUserID + err.Error() + // return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil + //} err = imdb.OperateGroupStatus(req.GroupID, constant.GroupStatusMuted) if err != nil {