加强对群组权限的检查
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
|
||||
package io.moquette.imhandler;
|
||||
|
||||
import cn.wildfirechat.proto.ProtoConstants;
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
@@ -24,6 +25,13 @@ public class LoadRemoteMessagesHandler extends IMHandler<WFCMessage.LoadRemoteMe
|
||||
if (beforeUid == 0) {
|
||||
beforeUid = Long.MAX_VALUE;
|
||||
}
|
||||
|
||||
if (request.getConversation().getType() == ProtoConstants.ConversationType.ConversationType_Group) {
|
||||
if (!m_messagesStore.isMemberInGroup(fromUser, request.getConversation().getTarget())) {
|
||||
return ErrorCode.ERROR_CODE_NOT_IN_GROUP;
|
||||
}
|
||||
}
|
||||
|
||||
WFCMessage.PullMessageResult result = m_messagesStore.loadRemoteMessages(fromUser, request.getConversation(), beforeUid, request.getCount());
|
||||
byte[] data = result.toByteArray();
|
||||
LOG.info("User {} load message with count({}), payload size({})", fromUser, result.getMessageCount(), data.length);
|
||||
|
||||
@@ -1259,8 +1259,9 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
if (members == null || members.size() == 0) {
|
||||
members = loadGroupMemberFromDB(hzInstance, groupId);
|
||||
}
|
||||
for (WFCMessage.GroupMember member : members
|
||||
) {
|
||||
|
||||
boolean isInGroup = false;
|
||||
for (WFCMessage.GroupMember member : members) {
|
||||
if (member.getMemberId().equals(memberId)) {
|
||||
if (member.getType() == GroupMemberType_Silent) {
|
||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||
@@ -1273,11 +1274,16 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
if (member.getMemberId().equals(memberId) && member.getType() == GroupMemberType_Removed) {
|
||||
return ErrorCode.ERROR_CODE_NOT_IN_GROUP;
|
||||
}
|
||||
isInGroup = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!isInGroup) {
|
||||
return ErrorCode.ERROR_CODE_NOT_IN_GROUP;
|
||||
}
|
||||
|
||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user