Browse Source

优化权限

zhou-hao 4 năm trước cách đây
mục cha
commit
2a4011a4f2

+ 1 - 0
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/AuthenticationHolder.java

@@ -56,6 +56,7 @@ public final class AuthenticationHolder {
                 .filter(Optional::isPresent)
                 .map(Optional::get)
                 .reduceWith(SimpleAuthentication::new, SimpleAuthentication::merge)
+                .filter(auth->auth.getUser()!=null)
                 .map(Authentication.class::cast)
                 .blockOptional();
     }

+ 18 - 6
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/Permission.java

@@ -22,10 +22,7 @@ import org.hswebframework.web.authorization.access.FieldFilterDataAccessConfig;
 import org.hswebframework.web.authorization.access.ScopeDataAccessConfig;
 
 import java.io.Serializable;
-import java.util.Collections;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
@@ -89,8 +86,21 @@ public interface Permission extends Serializable {
      */
     String getId();
 
+    /**
+     * @return 权限名称
+     */
     String getName();
 
+    /**
+     * @return 其他拓展字段
+     */
+    Map<String, Object> getOptions();
+
+    default Optional<Object> getOption(String key) {
+        return Optional.ofNullable(getOptions())
+                .map(map -> map.get(key));
+    }
+
     /**
      * 用户对此权限的可操作事件(按钮)
      * <p>
@@ -112,12 +122,13 @@ public interface Permission extends Serializable {
     Set<DataAccessConfig> getDataAccesses();
 
 
-    default  Set<DataAccessConfig> getDataAccesses(String action){
+    default Set<DataAccessConfig> getDataAccesses(String action) {
         return getDataAccesses()
                 .stream()
-                .filter(conf->conf.getAction().equals(action))
+                .filter(conf -> conf.getAction().equals(action))
                 .collect(Collectors.toSet());
     }
+
     /**
      * 查找数据权限配置
      *
@@ -198,6 +209,7 @@ public interface Permission extends Serializable {
     }
 
     Permission copy();
+
     /**
      * 数据权限查找判断逻辑接口
      *

+ 7 - 5
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/SimplePermission.java

@@ -4,9 +4,7 @@ import lombok.*;
 import org.hswebframework.web.authorization.Permission;
 import org.hswebframework.web.authorization.access.DataAccessConfig;
 
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @author zhouhao
@@ -28,6 +26,7 @@ public class SimplePermission implements Permission {
 
     private Set<DataAccessConfig> dataAccesses;
 
+    private Map<String, Object> options;
 
     public Set<String> getActions() {
         if (actions == null) {
@@ -43,13 +42,16 @@ public class SimplePermission implements Permission {
         return dataAccesses;
     }
 
-    public Permission copy(){
-        SimplePermission permission =new SimplePermission();
+    public Permission copy() {
+        SimplePermission permission = new SimplePermission();
 
         permission.setId(id);
         permission.setName(name);
         permission.setActions(new HashSet<>(getActions()));
         permission.setDataAccesses(new HashSet<>(getDataAccesses()));
+        if (options != null) {
+            permission.setOptions(new HashMap<>(options));
+        }
         return permission;
     }
 }

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

@@ -121,6 +121,7 @@ public class DefaultReactiveAuthenticationInitializeService
                 SimplePermission permission = new SimplePermission();
                 permission.setId(permissionEntity.getId());
                 permission.setName(permissionEntity.getName());
+                permission.setOptions(permissionEntity.getProperties());
                 Set<DataAccessConfig> configs = new HashSet<>();
 
                 for (AuthorizationSettingEntity permissionSetting : permissionSettings) {