Просмотр исходного кода

根据角色设置自定义 select 标签中 AppEnv 和 AppType 的值, 用户访问时会根据其角色来渲染 select 标签中的实际值

reghao 2 лет назад
Родитель
Сommit
49f39e230b

+ 51 - 11
manager/src/main/java/cn/reghao/devops/manager/template/attribute/SelectDictAttrProcessor.java

@@ -1,7 +1,10 @@
 package cn.reghao.devops.manager.template.attribute;
 
+import cn.reghao.devops.common.build.model.constant.EnvType;
 import cn.reghao.devops.manager.account.model.constant.MenuType;
-import cn.reghao.devops.manager.util.DefaultSetting;
+import cn.reghao.devops.manager.account.model.constant.RoleType;
+import cn.reghao.devops.manager.account.service.UserContext;
+import cn.reghao.devops.manager.app.model.constant.AppType;
 import org.thymeleaf.IEngineConfiguration;
 import org.thymeleaf.context.ITemplateContext;
 import org.thymeleaf.engine.AttributeName;
@@ -20,6 +23,7 @@ import java.util.*;
  * @date 2018/8/14
  */
 public class SelectDictAttrProcessor extends AbstractAttributeTagProcessor {
+    private final static Map<String, Map<String, Map<String, Object>>> selectCache = new HashMap<>();
     private final static Map<String, Map<String, Object>> localCache = new HashMap<>();
     static {
         // 只会在应用启动时初始化一次
@@ -36,8 +40,8 @@ public class SelectDictAttrProcessor extends AbstractAttributeTagProcessor {
         localCache.get("LOGLEVEL").put("info", "info");
         localCache.get("LOGLEVEL").put("error", "error");
 
-        localCache.put("ENVIRONMENT", new HashMap<>());
-        localCache.put("APP_TYPE", new HashMap<>());
+        selectCache.put("ENVIRONMENT", new HashMap<>());
+        selectCache.put("APP_TYPE", new HashMap<>());
     }
     
     public static final int PRECEDENCE = 1400;
@@ -61,20 +65,56 @@ public class SelectDictAttrProcessor extends AbstractAttributeTagProcessor {
      * @date 2023-12-01 15:15:50
      */
     private Map<String, Object> getSelectOptions(String attr) {
-        Map<String, Object> map = localCache.get(attr);
+        Map<String, Map<String, Object>> map = selectCache.get(attr);
         if (map.isEmpty()) {
             if ("ENVIRONMENT".equals(attr)) {
-                DefaultSetting.getAppEnvs().forEach(appEnv -> {
-                    map.put(appEnv.getKey(), appEnv.getValue());
-                });
+                for (RoleType roleType : RoleType.values()) {
+                    String role = roleType.name();
+                    if (role.equals(RoleType.ROLE_ADMIN.name())) {
+                        Map<String, Object> map1 = new HashMap<>();
+                        for (EnvType envType : EnvType.values()) {
+                            map1.put(envType.name(), envType.name());
+                        }
+                        map.put(role, map1);
+                    } else if (role.equals(RoleType.ROLE_BACKEND.name()) || role.equals(RoleType.ROLE_FRONTEND.name())) {
+                        Map<String, Object> map1 = new HashMap<>();
+                        map1.put(EnvType.uat.name(), EnvType.uat.name());
+                        map1.put(EnvType.test.name(), EnvType.test.name());
+                        map.put(role, map1);
+                    } else {
+                        Map<String, Object> map1 = new HashMap<>();
+                        map1.put(EnvType.test.name(), EnvType.test.name());
+                        map.put(role, map1);
+                    }
+                }
             } else if ("APP_TYPE".equals(attr)) {
-                DefaultSetting.getAppTypes().forEach(appType -> {
-                    map.put(appType.getKey(), appType.getValue());
-                });
+                for (RoleType roleType : RoleType.values()) {
+                    String role = roleType.name();
+                    if (role.equals(RoleType.ROLE_ADMIN.name())) {
+                        Map<String, Object> map1 = new HashMap<>();
+                        for (AppType appType : AppType.values()) {
+                            map1.put(appType.name(), appType.name());
+                        }
+                        map.put(role, map1);
+                    } else if (role.equals(RoleType.ROLE_BACKEND.name())) {
+                        Map<String, Object> map1 = new HashMap<>();
+                        map1.put(AppType.dotnetCore.name(), AppType.dotnetCore.getName());
+                        map.put(role, map1);
+                    } else if (role.equals(RoleType.ROLE_FRONTEND.name())) {
+                        Map<String, Object> map1 = new HashMap<>();
+                        map1.put(AppType.npm.name(), AppType.npm.getName());
+                        map.put(role, map1);
+                    } else {
+                        Map<String, Object> map1 = new HashMap<>();
+                        map1.put(AppType.maven.name(), AppType.maven.getName());
+                        map.put(role, map1);
+                    }
+                }
             }
         }
 
-        return map;
+        String role = UserContext.getUserRole();
+        return map.get(role);
     }
 
     @Override