From b2eab28cb971b1c3823970fd8208401ef3143f80 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Sat, 12 Nov 2022 14:17:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=BE=A4=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E4=B8=8D=E8=83=BD=E8=87=AA=E4=B8=BB=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/moquette/imhandler/QuitGroupHandler.java | 2 +- .../java/io/moquette/persistence/MemoryMessagesStore.java | 6 +++++- broker/src/main/java/io/moquette/spi/IMessagesStore.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/broker/src/main/java/io/moquette/imhandler/QuitGroupHandler.java b/broker/src/main/java/io/moquette/imhandler/QuitGroupHandler.java index ae2b1388..9f99a1d4 100644 --- a/broker/src/main/java/io/moquette/imhandler/QuitGroupHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/QuitGroupHandler.java @@ -31,7 +31,7 @@ public class QuitGroupHandler extends GroupHandler return ErrorCode.ERROR_CODE_NOT_RIGHT; } - ErrorCode errorCode = m_messagesStore.quitGroup(fromUser, request.getGroupId()); + ErrorCode errorCode = m_messagesStore.quitGroup(fromUser, request.getGroupId(), isAdmin); if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) { sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent()); diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index efd47e3c..a7fb085e 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -1420,7 +1420,7 @@ public class MemoryMessagesStore implements IMessagesStore { } @Override - public ErrorCode quitGroup(String operator, String groupId) { + public ErrorCode quitGroup(String operator, String groupId, boolean admin) { HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); IMap mIMap = hzInstance.getMap(GROUPS_MAP); @@ -1439,6 +1439,10 @@ public class MemoryMessagesStore implements IMessagesStore { } return ErrorCode.ERROR_CODE_NOT_EXIST; } + + if(!admin && groupInfo.getType() == ProtoConstants.GroupType.GroupType_Organization) { + return ErrorCode.ERROR_CODE_NOT_RIGHT; + } if (groupInfo.getType() != ProtoConstants.GroupType.GroupType_Free && groupInfo.getOwner() != null && groupInfo.getOwner().equals(operator)) { MultiMap groupMembers = hzInstance.getMultiMap(GROUP_MEMBERS); diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index 4030ba79..a8295926 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -110,7 +110,7 @@ public interface IMessagesStore { WFCMessage.GroupInfo createGroup(String operator, WFCMessage.GroupInfo groupInfo, List memberList, String memberExtra, boolean isAdmin); ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List memberList, String extra); ErrorCode kickoffGroupMembers(String operator, boolean isAdmin, String groupId, List memberList); - ErrorCode quitGroup(String operator, String groupId); + ErrorCode quitGroup(String operator, String groupId, boolean admin); void clearUserGroups(String userId); ErrorCode dismissGroup(String operator, String groupId, boolean isAdmin); ErrorCode modifyGroupInfo(String operator, String groupId, int modifyType, String value, boolean isAdmin);