From 6759e0c25b54c597e4123dfa3226e5a5bac8c63f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 15 Sep 2022 15:52:48 +0800 Subject: [PATCH] fix bug: invited/kick failed due to json tag validation --- cmd/open_im_demo/main.go | 1 - internal/api/group/group.go | 14 ++++++++++++-- pkg/base_info/group_api_struct.go | 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cmd/open_im_demo/main.go b/cmd/open_im_demo/main.go index 0e2dbaea6..9d8152218 100644 --- a/cmd/open_im_demo/main.go +++ b/cmd/open_im_demo/main.go @@ -65,7 +65,6 @@ func main() { defaultPorts := config.Config.Demo.Port ginPort := flag.Int("port", defaultPorts[0], "get ginServerPort from cmd,default 10004 as port") flag.Parse() - fmt.Println("start demo api server, port: ", *ginPort) address := "0.0.0.0:" + strconv.Itoa(*ginPort) if config.Config.Api.ListenIP != "" { address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 5c4427875..1cddd7ede 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -42,10 +42,14 @@ func KickGroupMember(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - + if len(params.KickedUserIDList) > constant.MaxNotificationNum { + errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.KickedUserIDList))) + log.Error(params.OperationID, errMsg) + c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) + return + } req := &rpc.KickGroupMemberReq{} utils.CopyStructFields(req, ¶ms) - var ok bool var errInfo string ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) @@ -318,6 +322,12 @@ func InviteUserToGroup(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } + if len(params.InvitedUserIDList) > constant.MaxNotificationNum { + errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.InvitedUserIDList))) + log.Error(params.OperationID, errMsg) + c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) + return + } req := &rpc.InviteUserToGroupReq{} utils.CopyStructFields(req, ¶ms) diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index f2703bba2..8f2eaccd4 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -16,7 +16,7 @@ type CommDataResp struct { type KickGroupMemberReq struct { GroupID string `json:"groupID" binding:"required"` - KickedUserIDList []string `json:"kickedUserIDList" binding:"required, min=1, max=100"` + KickedUserIDList []string `json:"kickedUserIDList" binding:"required"` Reason string `json:"reason"` OperationID string `json:"operationID" binding:"required"` } @@ -38,7 +38,7 @@ type GetGroupMembersInfoResp struct { type InviteUserToGroupReq struct { GroupID string `json:"groupID" binding:"required"` - InvitedUserIDList []string `json:"invitedUserIDList" binding:"required, min=1, max=100"` + InvitedUserIDList []string `json:"invitedUserIDList" binding:"required"` Reason string `json:"reason"` OperationID string `json:"operationID" binding:"required"` }