From 58f4ebe4116724d9c9e8850470308ea0a76f7671 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 13 Jul 2022 14:28:49 +0800 Subject: [PATCH] Limit the number of members invited to join the group --- internal/api/group/group.go | 8 +++++++- internal/rpc/msg/group_notification.go | 4 +++- pkg/base_info/public_struct.go | 2 +- pkg/common/constant/constant.go | 2 ++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 5105a117d..9c7500872 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -3,6 +3,7 @@ package group import ( api "Open_IM/pkg/base_info" "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" @@ -316,7 +317,12 @@ func InviteUserToGroup(c *gin.Context) { } req := &rpc.InviteUserToGroupReq{} utils.CopyStructFields(req, ¶ms) - + if len(req.InvitedUserIDList) > constant.MaxNotificationNum { + errMsg := req.OperationID + " too many, Limit: " + utils.IntToString(constant.MaxNotificationNum) + log.NewError(req.OperationID, errMsg, len(req.InvitedUserIDList)) + c.JSON(http.StatusRequestEntityTooLarge, gin.H{"errCode": 400, "errMsg": errMsg}) + return + } var ok bool var errInfo string ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) diff --git a/internal/rpc/msg/group_notification.go b/internal/rpc/msg/group_notification.go index 8d18657a2..e14bfce8d 100644 --- a/internal/rpc/msg/group_notification.go +++ b/internal/rpc/msg/group_notification.go @@ -232,6 +232,9 @@ func GroupCreatedNotification(operationID, opUserID, groupID string, initMemberL continue } GroupCreatedTips.MemberList = append(GroupCreatedTips.MemberList, &groupMemberInfo) + if len(GroupCreatedTips.MemberList) == constant.MaxNotificationNum { + break + } } groupNotification(constant.GroupCreatedNotification, &GroupCreatedTips, opUserID, groupID, "", operationID) } @@ -536,7 +539,6 @@ func MemberInvitedNotification(operationID, groupID, opUserID, reason string, in } MemberInvitedTips.InvitedUserList = append(MemberInvitedTips.InvitedUserList, &groupMemberInfo) } - groupNotification(constant.MemberInvitedNotification, &MemberInvitedTips, opUserID, groupID, "", operationID) } diff --git a/pkg/base_info/public_struct.go b/pkg/base_info/public_struct.go index 824f58043..e00be850d 100644 --- a/pkg/base_info/public_struct.go +++ b/pkg/base_info/public_struct.go @@ -32,7 +32,7 @@ type ApiUserInfo struct { type GroupAddMemberInfo struct { UserID string `json:"userID" binding:"required"` - RoleLevel int32 `json:"roleLevel" binding:"required"` + RoleLevel int32 `json:"roleLevel" binding:"required,oneof= 1 3"` } func SetErrCodeMsg(c *gin.Context, status int) *CommResp { diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 7b6c77d12..3deeed5e6 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -303,3 +303,5 @@ const BigVersion = "v2" const LogFileName = "OpenIM.log" const StatisticsTimeInterval = 60 + +const MaxNotificationNum = 100