From 6c12751e270ccf5be4dccadefa33ef39d5a722cc Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Fri, 14 Jul 2023 20:07:26 +0800 Subject: [PATCH 01/10] fix: implement of GetUsersOnlineStatus (#567) --- internal/api/user.go | 2 +- internal/msggateway/hub_server.go | 5 ----- pkg/common/db/cache/conversation.go | 6 +++--- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/internal/api/user.go b/internal/api/user.go index 28cb74509..baea8fed3 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -83,7 +83,7 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) { msgClient := msggateway.NewMsgGatewayClient(v) reply, err := msgClient.GetUsersOnlineStatus(c, &req) if err != nil { - log.ZWarn(c, "GetUsersOnlineStatus rpc err", err) + log.ZWarn(c, "GetUsersOnlineStatus rpc err", err) continue } else { wsResult = append(wsResult, reply.SuccessResult...) diff --git a/internal/msggateway/hub_server.go b/internal/msggateway/hub_server.go index 81aade1cb..5b756bf92 100644 --- a/internal/msggateway/hub_server.go +++ b/internal/msggateway/hub_server.go @@ -25,9 +25,7 @@ import ( "github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/prome" - "github.com/OpenIMSDK/Open-IM-Server/pkg/common/tokenverify" "github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry" - "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msggateway" "github.com/OpenIMSDK/Open-IM-Server/pkg/startrpc" "github.com/OpenIMSDK/Open-IM-Server/pkg/utils" @@ -84,9 +82,6 @@ func (s *Server) GetUsersOnlineStatus( ctx context.Context, req *msggateway.GetUsersOnlineStatusReq, ) (*msggateway.GetUsersOnlineStatusResp, error) { - if !tokenverify.IsAppManagerUid(ctx) { - return nil, errs.ErrNoPermission.Wrap("only app manager") - } var resp msggateway.GetUsersOnlineStatusResp for _, userID := range req.UserIDs { clients, ok := s.LongConnServer.GetUserAllCons(userID) diff --git a/pkg/common/db/cache/conversation.go b/pkg/common/db/cache/conversation.go index d3a9d44aa..119967c70 100644 --- a/pkg/common/db/cache/conversation.go +++ b/pkg/common/db/cache/conversation.go @@ -54,7 +54,7 @@ type ConversationCache interface { // get one conversation from msgCache GetConversation(ctx context.Context, ownerUserID, conversationID string) (*relationTb.ConversationModel, error) - DelConvsersations(ownerUserID string, conversationIDs ...string) ConversationCache + DelConversations(ownerUserID string, conversationIDs ...string) ConversationCache DelUsersConversation(conversationID string, ownerUserIDs ...string) ConversationCache // get one conversation from msgCache GetConversations( @@ -225,9 +225,9 @@ func (c *ConversationRedisCache) GetConversation( ) } -func (c *ConversationRedisCache) DelConvsersations(ownerUserID string, convsersationIDs ...string) ConversationCache { +func (c *ConversationRedisCache) DelConversations(ownerUserID string, conversationIDs ...string) ConversationCache { var keys []string - for _, conversationID := range convsersationIDs { + for _, conversationID := range conversationIDs { keys = append(keys, c.getConversationKey(ownerUserID, conversationID)) } cache := c.NewCache() From b5e5945b61b398fe1a4d676fd885bff50c4ac4cb Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Mon, 17 Jul 2023 15:13:28 +0800 Subject: [PATCH 02/10] fix bug: obtain user online status err(#567) --- internal/api/user.go | 6 +++++- internal/msggateway/hub_server.go | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/api/user.go b/internal/api/user.go index baea8fed3..1e75b8fb4 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -84,7 +84,11 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) { reply, err := msgClient.GetUsersOnlineStatus(c, &req) if err != nil { log.ZWarn(c, "GetUsersOnlineStatus rpc err", err) - continue + // apiresp.GinError(c, err) + parseError := apiresp.ParseError(err) + if parseError.ErrCode == errs.NoPermissionError { + apiresp.GinError(c, err) + } } else { wsResult = append(wsResult, reply.SuccessResult...) } diff --git a/internal/msggateway/hub_server.go b/internal/msggateway/hub_server.go index 6d852515c..992943fe9 100644 --- a/internal/msggateway/hub_server.go +++ b/internal/msggateway/hub_server.go @@ -16,6 +16,8 @@ package msggateway import ( "context" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/tokenverify" + "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache" From 459efacd3c36eef3b1a78d3f26458ad2d5992c72 Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Mon, 17 Jul 2023 16:29:01 +0800 Subject: [PATCH 03/10] fix bug: obtain user online status err(#567) --- internal/msggateway/hub_server.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/msggateway/hub_server.go b/internal/msggateway/hub_server.go index 992943fe9..deb8c3d77 100644 --- a/internal/msggateway/hub_server.go +++ b/internal/msggateway/hub_server.go @@ -16,11 +16,10 @@ package msggateway import ( "context" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/tokenverify" "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" - "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache" - "google.golang.org/grpc" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" @@ -84,6 +83,9 @@ func (s *Server) GetUsersOnlineStatus( ctx context.Context, req *msggateway.GetUsersOnlineStatusReq, ) (*msggateway.GetUsersOnlineStatusResp, error) { + if !tokenverify.IsAppManagerUid(ctx) { + return nil, errs.ErrNoPermission.Wrap("only app manager") + } var resp msggateway.GetUsersOnlineStatusResp for _, userID := range req.UserIDs { clients, ok := s.LongConnServer.GetUserAllCons(userID) From a06de3c7d7d7fac799243e9a1b7f2c9e1849c799 Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Mon, 17 Jul 2023 16:30:48 +0800 Subject: [PATCH 04/10] fix bug: obtain user online status err(#567) --- internal/msggateway/hub_server.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/msggateway/hub_server.go b/internal/msggateway/hub_server.go index 992943fe9..deb8c3d77 100644 --- a/internal/msggateway/hub_server.go +++ b/internal/msggateway/hub_server.go @@ -16,11 +16,10 @@ package msggateway import ( "context" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/tokenverify" "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" - "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache" - "google.golang.org/grpc" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" @@ -84,6 +83,9 @@ func (s *Server) GetUsersOnlineStatus( ctx context.Context, req *msggateway.GetUsersOnlineStatusReq, ) (*msggateway.GetUsersOnlineStatusResp, error) { + if !tokenverify.IsAppManagerUid(ctx) { + return nil, errs.ErrNoPermission.Wrap("only app manager") + } var resp msggateway.GetUsersOnlineStatusResp for _, userID := range req.UserIDs { clients, ok := s.LongConnServer.GetUserAllCons(userID) From 4e9ac1081b9250b2b664f97596a572077929899d Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Mon, 17 Jul 2023 16:32:28 +0800 Subject: [PATCH 05/10] fix bug: obtain user online status err(#567) --- internal/api/user.go | 6 +++++- internal/msggateway/hub_server.go | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/api/user.go b/internal/api/user.go index baea8fed3..1e75b8fb4 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -84,7 +84,11 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) { reply, err := msgClient.GetUsersOnlineStatus(c, &req) if err != nil { log.ZWarn(c, "GetUsersOnlineStatus rpc err", err) - continue + // apiresp.GinError(c, err) + parseError := apiresp.ParseError(err) + if parseError.ErrCode == errs.NoPermissionError { + apiresp.GinError(c, err) + } } else { wsResult = append(wsResult, reply.SuccessResult...) } diff --git a/internal/msggateway/hub_server.go b/internal/msggateway/hub_server.go index 6d852515c..deb8c3d77 100644 --- a/internal/msggateway/hub_server.go +++ b/internal/msggateway/hub_server.go @@ -16,8 +16,9 @@ package msggateway import ( "context" - "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/tokenverify" + "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" "google.golang.org/grpc" @@ -82,6 +83,9 @@ func (s *Server) GetUsersOnlineStatus( ctx context.Context, req *msggateway.GetUsersOnlineStatusReq, ) (*msggateway.GetUsersOnlineStatusResp, error) { + if !tokenverify.IsAppManagerUid(ctx) { + return nil, errs.ErrNoPermission.Wrap("only app manager") + } var resp msggateway.GetUsersOnlineStatusResp for _, userID := range req.UserIDs { clients, ok := s.LongConnServer.GetUserAllCons(userID) From 7313ffb321888b537fafee897fd39c33899fafd1 Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Thu, 20 Jul 2023 18:21:22 +0800 Subject: [PATCH 06/10] fix bug: obtain user online status err(#567) --- internal/api/user.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/api/user.go b/internal/api/user.go index 1e75b8fb4..0cfe63a2f 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -88,6 +88,7 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) { parseError := apiresp.ParseError(err) if parseError.ErrCode == errs.NoPermissionError { apiresp.GinError(c, err) + return } } else { wsResult = append(wsResult, reply.SuccessResult...) From 24549defa3e4ec022c5e7555675b672faf5a350b Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Fri, 21 Jul 2023 09:49:14 +0800 Subject: [PATCH 07/10] fix bug: obtain user online status err(#567) --- internal/api/user.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/internal/api/user.go b/internal/api/user.go index 0cfe63a2f..a48bf1498 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -84,12 +84,7 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) { reply, err := msgClient.GetUsersOnlineStatus(c, &req) if err != nil { log.ZWarn(c, "GetUsersOnlineStatus rpc err", err) - // apiresp.GinError(c, err) - parseError := apiresp.ParseError(err) - if parseError.ErrCode == errs.NoPermissionError { - apiresp.GinError(c, err) - return - } + apiresp.GinError(c, err) } else { wsResult = append(wsResult, reply.SuccessResult...) } From 36802ab2765f206240715719f8da7111c41cfdd6 Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:44:28 +0800 Subject: [PATCH 08/10] fix bug: obtain user online status err(#567) --- internal/api/user.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/api/user.go b/internal/api/user.go index a48bf1498..5febe4668 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -84,7 +84,13 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) { reply, err := msgClient.GetUsersOnlineStatus(c, &req) if err != nil { log.ZWarn(c, "GetUsersOnlineStatus rpc err", err) - apiresp.GinError(c, err) + + parseError := apiresp.ParseError(err) + log.ZInfo(c, "errcode bantanger", parseError.ErrCode) + if parseError.ErrCode == errs.NoPermissionError { + apiresp.GinError(c, err) + return + } } else { wsResult = append(wsResult, reply.SuccessResult...) } From a4736e66c39d3f4453c676f097f32e426e438288 Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Fri, 21 Jul 2023 11:17:16 +0800 Subject: [PATCH 09/10] fix bug: obtain user online status err(#567) --- internal/api/user.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/user.go b/internal/api/user.go index 5febe4668..3e338ac83 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -86,7 +86,7 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) { log.ZWarn(c, "GetUsersOnlineStatus rpc err", err) parseError := apiresp.ParseError(err) - log.ZInfo(c, "errcode bantanger", parseError.ErrCode) + log.ZDebug(c, "errcode bantanger", parseError.ErrCode) if parseError.ErrCode == errs.NoPermissionError { apiresp.GinError(c, err) return From ced120ea575a03fb0ddda15e71583fe778976cf2 Mon Sep 17 00:00:00 2001 From: BanTanger <88583317+BanTanger@users.noreply.github.com> Date: Fri, 21 Jul 2023 11:34:38 +0800 Subject: [PATCH 10/10] fix bug: obtain user online status err(#567) --- internal/api/user.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/user.go b/internal/api/user.go index 3e338ac83..67c042ea4 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -86,7 +86,7 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) { log.ZWarn(c, "GetUsersOnlineStatus rpc err", err) parseError := apiresp.ParseError(err) - log.ZDebug(c, "errcode bantanger", parseError.ErrCode) + log.ZDebug(c, "errcode bantanger", "errcode", parseError.ErrCode) if parseError.ErrCode == errs.NoPermissionError { apiresp.GinError(c, err) return