diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index e737fb163..306c409d1 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -435,6 +435,11 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G utils.CopyStructFields(&groupRequest, req) groupRequest.UserID = req.FromUserID groupRequest.HandleUserID = req.OpUserID + + if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { + log.NewError(req.OperationID, "IsMangerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil + } err := imdb.UpdateGroupRequest(groupRequest) if err != nil { log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.String()) diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index 9611dfac0..fd4c8206b 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -108,12 +108,11 @@ type GetGroupInfoResp struct { } type ApplicationGroupResponseReq struct { - OperationID string `json:"operationID" binding:"required"` - GroupID string `json:"groupID" binding:"required"` - FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID - HandledMsg string `json:"handledMsg"` - //`json:"flag" binding:"required,oneof=-1 0 1"` - HandleResult int32 `json:"handleResult" binding:"required,oneof=-1 1"` + OperationID string `json:"operationID" binding:"required"` + GroupID string `json:"groupID" binding:"required"` + FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID + HandledMsg string `json:"handledMsg"` + HandleResult int32 `json:"handleResult" binding:"required,oneof=-1 1"` } type ApplicationGroupResponseResp struct { CommResp diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go index 7e4afb402..95f4c5723 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go @@ -210,6 +210,19 @@ func GetJoinedGroupIDListByUserID(userID string) ([]string, error) { return groupIDList, nil } +func IsGroupOwnerAdmin(groupID, UserID string) bool { + groupMemberList, err := GetOwnerManagerByGroupID(groupID) + if err != nil { + return false + } + for _, v := range groupMemberList { + if v.UserID == UserID && v.RoleLevel > constant.GroupOrdinaryUsers { + return true + } + } + return false +} + // //func SelectGroupList(groupID string) ([]string, error) { // var groupUserID string