Sfoglia il codice sorgente

接口权限控制

zhaops 5 anni fa
parent
commit
27cb479938

+ 1 - 0
common-biz-client/src/main/java/com/diagbot/client/TranCommonServiceClient.java

@@ -4,6 +4,7 @@ import com.diagbot.client.hystrix.TranCommonServiceHystrix;
 import com.diagbot.dto.FunctionDTO;
 import com.diagbot.dto.HosPermissionDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.HospitalFunctionVO;
 import com.diagbot.vo.PermissionVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;

+ 22 - 13
common-biz-client/src/main/java/com/diagbot/util/PermissionUtil.java

@@ -20,9 +20,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description:
@@ -30,9 +28,15 @@ import java.util.Map;
  * @time: 2020/2/17 14:57
  */
 @Slf4j
+@Component
 public class PermissionUtil {
+
+    private static PermissionFacade permissionFacade;
+
     @Autowired
-    private PermissionFacade permissionFacade;
+    public void PermissionUtil(PermissionFacade permissionFacade) {
+        PermissionUtil.permissionFacade = permissionFacade;
+    }
 
     /**
      * 功能可配置权限拦截
@@ -45,7 +49,7 @@ public class PermissionUtil {
         ServletRequestAttributes sra = (ServletRequestAttributes) ra;
         HttpServletRequest request = sra.getRequest();
         //忽略机制
-        if (matchPermitAllUrl(request,ignoreUrl)){
+        if (matchPermitAllUrl(request, ignoreUrl)) {
             return;
         }
         //验证机制
@@ -90,7 +94,7 @@ public class PermissionUtil {
         }
 
         if (!noParam && !hasParam) {
-            throw new CommonException(CommonErrorCode.NO_PERMISSION, "当前医院没有开通此功能!");
+            throw new CommonException(CommonErrorCode.NO_PERMISSION);
         }
         //todo 验证参数
         Object[] args = joinPoint.getArgs();
@@ -126,22 +130,27 @@ public class PermissionUtil {
                                 String value = (String) obj;
                                 String[] valueArr = value.split(",|,");
                                 Set<String> valueSet = new HashSet<>(Arrays.asList(valueArr));
-                                Boolean flag = false;
-                                System.out.println(flag.toString());
+                                Boolean hasPermission = false;
                                 for (String permissionParamValue : permissionParamValueSet) {
                                     Set paramValueSet = new HashSet<>(Arrays.asList(permissionParamValue.split(",|,")));
                                     if (paramValueSet.containsAll(valueSet)) {
-                                        flag = true;
+                                        hasPermission = true;
                                         break;
                                     }
                                 }
-                                if (!flag) {
-                                    throw new CommonException(CommonErrorCode.NO_PERMISSION, "当前医院没有开通此功能!");
+                                if (!hasPermission) {
+                                    throw new CommonException(CommonErrorCode.NO_PERMISSION);
                                 }
                             } else if (type.equals("class java.lang.Boolean")) {
                                 Boolean value = (Boolean) obj;
-                                if (!permissionParamValueSet.contains(value.toString())) {
-                                    throw new CommonException(CommonErrorCode.NO_PERMISSION, "当前医院没有开通此功能!");
+                                Boolean hasPermission = false;
+                                for (String str : permissionParamValueSet) {
+                                    if (str.toLowerCase().equals(value.toString().toLowerCase())) {
+                                        hasPermission = true;
+                                    }
+                                }
+                                if (!hasPermission) {
+                                    throw new CommonException(CommonErrorCode.NO_PERMISSION);
                                 }
                             }
                         }