Ver Fonte

更新!

TRX há 1 ano atrás
pai
commit
6d02699cbc

+ 2 - 12
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/service/device/JMXSyncService.java

@@ -109,7 +109,6 @@ public class JMXSyncService {
                 ObjectName addressObjectName = ObjectNameBuilder.create("org.apache.activemq.artemis", mqttInfo.getBrokerName()).getActiveMQServerObjectName();
                 ActiveMQServerControl addressControl = MBeanServerInvocationHandler.newProxyInstance(connection, addressObjectName, ActiveMQServerControl.class, false);
 
-                String adminRole = MqttConfig.adminRoleName;
                 for (GateWayUserInfo gateWayUserInfo : gateWayUserInfoList) {
                     Mqtt2User mqtt2User = mqtt2UserDao.findTopByMqttInfoAndGateWayUserInfo(mqttInfo, gateWayUserInfo);
                     if (ObjectUtils.isEmpty(mqtt2User)) {
@@ -136,10 +135,7 @@ public class JMXSyncService {
                         if (ObjectUtils.isNotEmpty(security)) {
                             List<String> securites = security.stream().distinct().collect(Collectors.toList());
                             String roleName = gateWayUserInfo.getRoleName();
-                            List<String> roles = new ArrayList<>();
-                            roles.add(roleName);
-                            roles.add(adminRole);
-                            roleName = String.join(",", roles);
+                            roleName = JMXUtil.buildSecurityRoleName(roleName);
                             for (String addressMatch : securites) {
                                 addressControl.addSecuritySettings(addressMatch, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName);
                             }
@@ -447,7 +443,6 @@ public class JMXSyncService {
                 ObjectName addressObjectName = ObjectNameBuilder.create("org.apache.activemq.artemis", mqttInfo.getBrokerName()).getActiveMQServerObjectName();
                 ActiveMQServerControl addressControl = MBeanServerInvocationHandler.newProxyInstance(connection, addressObjectName, ActiveMQServerControl.class, false);
 
-                final String _roleName = MqttConfig.adminRoleName;
                 for (DeviceInfo deviceInfo : deviceInfos) {
                     GateWayUserInfo gateWayUserInfo = gateWayUserInfoDao.findTopByUserName(deviceInfo.getMqttUserName());
                     if (ObjectUtils.isEmpty(gateWayUserInfo)) {
@@ -456,12 +451,7 @@ public class JMXSyncService {
                     List<String> addressMatchs = JMXUtil.buildDeviceAddressMatch(deviceInfo);
                     if (ObjectUtils.isNotEmpty(addressMatchs)) {
                         String roleName = gateWayUserInfo.getRoleName();
-
-                        List<String> roleNames = new ArrayList<>();
-                        roleNames.add(roleName);
-                        roleNames.add(_roleName);
-
-                        roleName = String.join(",", roleNames);
+                        roleName = JMXUtil.buildSecurityRoleName(roleName);
                         for (String addressMatch : addressMatchs) {
                             try {
                                 addressControl.addSecuritySettings(addressMatch, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName, roleName);

+ 12 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/util/JMXUtil.java

@@ -2,12 +2,14 @@ package com.zhongshu.iot.server.core.util;
 
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
+import com.zhongshu.iot.server.core.dataConfig.MqttConfig;
 import com.zhongshu.iot.server.core.domain.iot.mqtt.DeviceInfo;
 import com.zhongshu.iot.server.core.domain.iot.mqtt.GateWayInfo;
 import com.zhongshu.iot.server.core.domain.iot.mqtt.GateWayUserInfo;
 import com.zhongshu.iot.server.core.domain.iot.mqtt.MqttInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -99,4 +101,14 @@ public class JMXUtil {
         return list;
     }
 
+    public static String buildSecurityRoleName(String roleName) {
+        if (StringUtils.isNotEmpty(roleName)) {
+            List<String> roleNames = new ArrayList<>();
+            roleNames.add(roleName);
+            roleNames.add(MqttConfig.adminRoleName);
+            return String.join(",", roleNames);
+        }
+        return roleName;
+    }
+
 }