From 969de83e1f485dc611bada38853dbbabc83a6476 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Tue, 24 Feb 2026 10:37:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AA=E6=9C=89=E5=9C=A8=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=9A=84=E6=97=B6=E5=80=99=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E9=94=81=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/moquette/imhandler/GetTokenHandler.java | 5 +++++ .../persistence/MemoryMessagesStore.java | 16 +++++++++------- .../java/io/moquette/spi/IMessagesStore.java | 3 +++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/broker/src/main/java/io/moquette/imhandler/GetTokenHandler.java b/broker/src/main/java/io/moquette/imhandler/GetTokenHandler.java index 1ce59ab9..f1e4e9b2 100644 --- a/broker/src/main/java/io/moquette/imhandler/GetTokenHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/GetTokenHandler.java @@ -26,6 +26,11 @@ public class GetTokenHandler extends IMHandler { if(userInfo != null && userInfo.getType() == 1) { return ErrorCode.ERROR_CODE_ROBOT_NO_TOKEN; } + if((session.isPcClient() || session.isPadClient())) { + if(m_messagesStore.isLocked(session.getUsername(), session.getClientID())) { + m_messagesStore.updateUserSettings(session.getUsername(), WFCMessage.ModifyUserSettingReq.newBuilder().setScope(UserSettingScopeLockPC).setKey(session.getClientID()).setValue("0").build(), null); + } + } TokenAuthenticator authenticator = new TokenAuthenticator(); String strToken = authenticator.generateToken(fromUser); diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index e48d07b6..2571a52d 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -3024,13 +3024,6 @@ public class MemoryMessagesStore implements IMessagesStore { return; } - if(!online && (session.isPcClient()) || session.isPadClient()) { - WFCMessage.UserSettingEntry lockSetting = getUserSetting(session.getUsername(), UserSettingScopeLockPC, session.getClientID()); - if(lockSetting != null && "1".equals(lockSetting.getValue())) { - updateUserSettings(session.getUsername(), WFCMessage.ModifyUserSettingReq.newBuilder().setScope(UserSettingScopeLockPC).setKey(session.getClientID()).setValue("0").build(), null); - } - } - String pcValue = null; String padValue = null; for (MemorySessionStore.Session s : m_Server.getStore().sessionsStore().sessionForUser(session.username)) { @@ -4552,6 +4545,15 @@ public class MemoryMessagesStore implements IMessagesStore { } } + @Override + public boolean isLocked(String userId, String clientId) { + WFCMessage.UserSettingEntry lockSetting = getUserSetting(userId, UserSettingScopeLockPC, clientId); + if(lockSetting != null && "1".equals(lockSetting.getValue())) { + return true; + } + return false; + } + @Override public boolean getUserGlobalSilent(String userId) { Boolean slient = userGlobalSlientMap.get(userId); diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index 8876ec20..7e5b934e 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -208,6 +208,9 @@ public interface IMessagesStore { List getUserSetting(String userId, int scope); long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request, String clientId); void clearUserSettings(String userId); + + boolean isLocked(String userId, String clientId); + boolean getUserGlobalSilent(String userId); boolean getUserVoipSilent(String userId);