From 41d326d40f0961495938fbd61592e1b3ca39945a Mon Sep 17 00:00:00 2001 From: imhao183 Date: Tue, 31 Dec 2019 08:51:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=81=E6=AD=A2=E7=A7=81=E8=81=8A=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=AF=B9=E6=9C=BA=E5=99=A8=E4=BA=BA/=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98/=E7=89=A9=E8=81=94=E7=BD=91=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=9A=84=E4=BE=8B=E5=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/moquette/persistence/DatabaseStore.java | 2 +- .../moquette/persistence/MemoryMessagesStore.java | 15 +++++++++++++++ .../cn/wildfirechat/proto/ProtoConstants.java | 2 ++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java index b165343f..c134ed48 100644 --- a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java +++ b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java @@ -191,7 +191,7 @@ public class DatabaseStore { } - sql += " and _type <> 2"; //can search normal user(0) and robot(1), can not search things + sql += " and _type <> 2"; //can search normal user(0) and robot(1) and admin(100), can not search things if (searchType == SearchUserType_Name_Mobile || searchType == SearchUserType_Name || searchType == SearchUserType_Mobile) { sql += " limit 1"; diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index aa864ebc..a1a04172 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -22,6 +22,7 @@ import cn.wildfirechat.proto.WFCMessage; import com.google.protobuf.ByteString; import com.hazelcast.core.*; import com.hazelcast.util.StringUtil; +import com.xiaoleilu.hutool.system.UserInfo; import com.xiaoleilu.loServer.model.FriendData; import cn.wildfirechat.pojos.InputOutputUserBlockStatus; import cn.wildfirechat.common.ErrorCode; @@ -1684,6 +1685,20 @@ public class MemoryMessagesStore implements IMessagesStore { } if (mDisableStrangerChat) { + //在禁止私聊时,允许机器人,物联网设备及管理员进行私聊。 + IMap mUserMap = hzInstance.getMap(USERS); + WFCMessage.User target = mUserMap.get(targetUser); + if (target != null && target.getType() != ProtoConstants.UserType.UserType_Normal) { + return ErrorCode.ERROR_CODE_SUCCESS; + } + target = mUserMap.get(fromUser); + if (target != null && target.getType() != ProtoConstants.UserType.UserType_Normal) { + return ErrorCode.ERROR_CODE_SUCCESS; + } + //admin的usertype为3,所以不需要hardcode为admin添加例外 +// if (targetUser.equals("admin") || fromUser.equals("admin")) { +// return ErrorCode.ERROR_CODE_SUCCESS; +// } return ErrorCode.ERROR_CODE_NOT_RIGHT; } diff --git a/common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java b/common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java index c60deaca..7bac27a4 100644 --- a/common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java +++ b/common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java @@ -125,6 +125,8 @@ public class ProtoConstants { int UserType_Normal = 0; int UserType_Robot = 1; int UserType_Device = 2; + int UserType_Admin = 3; + int UserType_Super_Admin = 100; }