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