Browse Source

优化权限

zhou-hao 5 years ago
parent
commit
1b117d8ddd

+ 1 - 0
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/builder/SimpleDataAccessConfigBuilderFactory.java

@@ -23,6 +23,7 @@ public class SimpleDataAccessConfigBuilderFactory implements DataAccessConfigBui
 
     private List<String> defaultSupportConvert = Arrays.asList(
             OWN_CREATED,
+            DIMENSION_SCOPE,
             DENY_FIELDS);
 
     private List<DataAccessConfigConverter> converts = new LinkedList<>();

+ 9 - 1
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultReactiveAuthenticationInitializeService.java

@@ -86,6 +86,7 @@ public class DefaultReactiveAuthenticationInitializeService
     protected Mono<Authentication> initPermission(SimpleAuthentication authentication) {
         return Flux.fromIterable(dimensionProviders)
                 .flatMap(provider -> provider.getDimensionByUserId(authentication.getUser().getId()))
+                .cast(Dimension.class)
                 .collectList()
                 .doOnNext(authentication::setDimensions)
                 .flatMap(allDimension ->
@@ -127,7 +128,14 @@ public class DefaultReactiveAuthenticationInitializeService
                     if (permissionSetting.getDataAccesses() != null) {
                         permissionSetting.getDataAccesses()
                                 .stream()
-                                .map(conf -> builderFactory.create().fromMap(conf.toMap()).build())
+                                .map(conf -> {
+                                    DataAccessConfig config = builderFactory.create().fromMap(conf.toMap()).build();
+                                    if (config == null) {
+                                        log.warn("unsupported data access:{}", conf.toMap());
+                                    }
+                                    return config;
+                                })
+                                .filter(Objects::nonNull)
                                 .forEach(access -> configs.put(access.getType(), access));
                     }
                     if (CollectionUtils.isNotEmpty(permissionSetting.getActions())) {