Browse Source

优化字段过滤权限控制

zhouhao 6 years ago
parent
commit
71e8b57666

+ 9 - 4
hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/handler/access/FieldFilterDataAccessHandler.java

@@ -41,6 +41,7 @@ public class FieldFilterDataAccessHandler implements DataAccessHandler {
             case Permission.ACTION_QUERY:
             case Permission.ACTION_GET:
                 return doQueryAccess(filterDataAccessConfig, context);
+            case Permission.ACTION_ADD:
             case Permission.ACTION_UPDATE:
                 return doUpdateAccess(filterDataAccessConfig, context);
             default:
@@ -59,10 +60,14 @@ public class FieldFilterDataAccessHandler implements DataAccessHandler {
      * @see org.apache.commons.beanutils.PropertyUtilsBean
      */
     protected boolean doUpdateAccess(FieldFilterDataAccessConfig accesses, AuthorizingContext params) {
-        Object supportParam = params.getParamContext().getParams().values().stream()
-                .filter(param -> (param instanceof Entity) || (param instanceof Model) || (param instanceof Map))
-                .findAny()
-                .orElse(null);
+        Map<String, Object> paramsMap = params.getParamContext().getParams();
+
+        Object supportParam = paramsMap.size() == 0 ?
+                paramsMap.values().iterator().next() :
+                paramsMap.values().stream()
+                        .filter(param -> (param instanceof Entity) || (param instanceof Model) || (param instanceof Map))
+                        .findAny()
+                        .orElse(null);
         if (null != supportParam) {
             for (String field : accesses.getFields()) {
                 try {