فهرست منبع

增加一丢丢readme

zhouhao 8 سال پیش
والد
کامیت
a8e9404831

+ 15 - 2
README.md

@@ -1,3 +1,16 @@
-## hsweb 3.0 一切都变了
+## hsweb-framework 3.0
 
-##敬请期待...
+## 模块简介
+
+1. [hsweb-authorization](hsweb-authorization) :权限控制
+2. [hsweb-commons](hsweb-commons) :基础通用功能
+3. [hsweb-concurrent](hsweb-concurrent) :并发包,缓存,锁,计数器等
+4. [hsweb-core](hsweb-core):框架核心
+5. [hsweb-datasource](hsweb-datasource) :数据源
+6. [hsweb-examples](hsweb-examples):例子,演示
+7. [hsweb-i18n](hsweb-i18n):国际化
+8. [hsweb-logging](hsweb-logging): 日志
+9. [hsweb-message](hsweb-message):mq,websocket...
+10. [hsweb-starter](hsweb-starter):模块启动器
+11. [hsweb-system](hsweb-system):**系统功能**
+12. [hsweb-tests](hsweb-tests):测试

+ 7 - 2
hsweb-authorization/README.md

@@ -1,2 +1,7 @@
-## 授权认证模块
-用于整个系统的授权认证管理
+# 授权认证模块
+用于整个系统的授权认证管理
+
+# 目录介绍
+1. [hsweb-authorization-api](hsweb-authorization-api):权限控制API
+1. [hsweb-authorization-oauth2](hsweb-authorization-oauth2):oauth2支持
+1. [hsweb-authorization-shiro](hsweb-authorization-api):权限控制的shiro实现

+ 25 - 0
hsweb-authorization/hsweb-authorization-api/README.md

@@ -0,0 +1,25 @@
+# 权限控制API
+用于权限控制的API接口,支持RBAC权限控制,支持数据级(控制到行,列)权限控制.
+
+# 介绍
+
+以下讲到的类都是基于包:org.hswebframework.web.authorization
+
+### 常用注解:
+_点击名称,查看源代码注释获得使用说明_
+
+| 注解名称       | 说明          | 
+| ------------- |:-------------:| 
+| [`@Authorize`](src/main/java/org/hswebframework/web/authorization/annotation/Authorize.java)    | RBAC方式权限控制注解 | 
+| [`@RequiresExpression`](src/main/java/org/hswebframework/web/authorization/annotation/RequiresExpression.java)      | 表达式方式验证      | 
+| [`@RequiresDataAccess`](src/main/java/org/hswebframework/web/authorization/annotation/RequiresDataAccess.java)      | 行级权限控制      | 
+| [`@RequiresFieldAccess`](src/main/java/org/hswebframework/web/authorization/annotation/RequiresFieldAccess.java)      | 列级权限控制      | 
+
+### 常用类
+_点击名称,查看源代码注释获得使用说明_
+
+
+| 类名       | 说明          | 
+| ------------- |:-------------:| 
+| [`Authorization`](src/main/java/org/hswebframework/web/authorization/Authorization.java)    | 用户的认证信息 | 
+| [`AuthorizationHolder`](src/main/java/org/hswebframework/web/authorization/AuthorizationHolder.java)      | 用于获取当前登录用户的认证信息      | 

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

@@ -50,6 +50,7 @@ public @interface Authorize {
      */
     String[] action() default {};
 
+
     /**
      * 验证是否为指定user
      *

+ 3 - 0
hsweb-authorization/hsweb-authorization-oauth2/README.md

@@ -0,0 +1,3 @@
+# oauth2 认证模块
+
+暂未完成

+ 35 - 0
hsweb-authorization/hsweb-authorization-shiro/README.md

@@ -0,0 +1,35 @@
+# shiro 权限控制实现
+
+[shiro官方文档](http://shiro.apache.org/documentation.html)
+
+本模块对shiro进行拓展,增加对[hsweb-authorization-api](../hsweb-authorization-api)中的注解进行实现。
+实现类如下:
+| 注解名称       | 实现类        | 
+| ------------- |:-------------:| 
+| [`@Authorize`](src/main/java/org/hswebframework/web/authorization/annotation/Authorize.java)    | 暂未实现 | 
+| [`@RequiresExpression`](src/main/java/org/hswebframework/web/authorization/annotation/RequiresExpression.java)      | [ExpressionAnnotationMethodInterceptor](src/main/java/org/hswebframework/web/authorization/shiro/boost/ExpressionAnnotationMethodInterceptor.java)      | 
+| [`@RequiresDataAccess`](src/main/java/org/hswebframework/web/authorization/annotation/RequiresDataAccess.java)      | [DataAccessAnnotationMethodInterceptor](src/main/java/org/hswebframework/web/authorization/shiro/boost/DataAccessAnnotationMethodInterceptor.java)      | 
+| [`@RequiresFieldAccess`](src/main/java/org/hswebframework/web/authorization/annotation/RequiresFieldAccess.java)      | [FieldAccessAnnotationMethodInterceptor](src/main/java/org/hswebframework/web/authorization/shiro/boost/FieldAccessAnnotationMethodInterceptor.java)      | 
+
+## 拓展接口
+
+### 行级权限控制器
+
+控制逻辑简述:
+1. 获取被拦截方法的注解信息,取得当前需要验证的permission,action。如: user,query
+2. 根据上一步获取到需要验证的permission和action获取当前登录用户权限信息中配置的控制规则(控制规则可以在前端进行设置)
+3. 调用控制器进行验证
+
+可自己实现DataAccessHandler接口并注入spring以实现自定义的控制方式
+
+现已实现3中控制器
+1. [CustomDataAccessHandler](src/main/java/org/hswebframework/web/authorization/shiro/boost/handler/CustomDataAccessHandler.java) 自定义控制器
+2. [OwnCreatedDataAccessHandler](src/main/java/org/hswebframework/web/authorization/shiro/boost/handler/OwnCreatedDataAccessHandler.java) 控制只能操作自己创建的数据
+3. [ScriptDataAccessHandler](src/main/java/org/hswebframework/web/authorization/shiro/boost/handler/ScriptDataAccessHandler.java) 使用脚本方式控制
+
+注意: 控制需满足的条件请查看控制器源代码查看注释获取
+
+### 列级别控制器
+控制逻辑和行级类似
+
+提供默认的控制器 [DefaultFieldAccessController](src/main/java/org/hswebframework/web/authorization/shiro/boost/DefaultFieldAccessController.java) 

+ 0 - 15
hsweb-authorization/hsweb-authorization-simple/pom.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-authorization</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-authorization-simple</artifactId>
-
-
-</project>

+ 0 - 1
hsweb-authorization/pom.xml

@@ -14,7 +14,6 @@
     <modules>
         <module>hsweb-authorization-api</module>
         <module>hsweb-authorization-oauth2</module>
-        <module>hsweb-authorization-simple</module>
         <module>hsweb-authorization-shiro</module>
     </modules>
 

+ 29 - 0
hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/TreeSupportEntity.java

@@ -23,7 +23,12 @@ import org.hswebframework.web.id.IDGenerator;
 import org.hswebframwork.utils.RandomUtil;
 import org.hswebframwork.utils.StringUtils;
 
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+import java.util.stream.Collectors;
 
 public interface TreeSupportEntity<PK> extends GenericEntity<PK> {
 
@@ -80,4 +85,28 @@ public interface TreeSupportEntity<PK> extends GenericEntity<PK> {
             }
         }
     }
+
+    /**
+     * 集合转为树形结构
+     *
+     * @param dataList      需要转换的集合
+     * @param childAccepter
+     * @param <T>
+     * @param <PK>
+     * @return
+     */
+    static <T extends TreeSupportEntity<PK>, PK> List<T> list2tree(Collection<T> dataList, BiConsumer<T, List<T>> childAccepter) {
+        // id,obj
+        Map<PK, T> cache = new HashMap<>();
+        // parentId,children
+        Map<PK, List<T>> treeCache = dataList.parallelStream()
+                .peek(node -> cache.put(node.getId(), node))
+                .collect(Collectors.groupingBy(TreeSupportEntity::getParentId));
+        return dataList.parallelStream()
+                //设置每个节点的子节点
+                .peek(node -> childAccepter.accept(node, treeCache.get(node.getId())))
+                //获取根节点
+                .filter(node -> node.getParentId() == null || cache.get(node.getParentId()) == null)
+                .collect(Collectors.toList());
+    }
 }

+ 0 - 3
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-entity/src/main/java/org/hswebframework/web/entity/authorization/UserEntity.java

@@ -18,12 +18,9 @@
 
 package org.hswebframework.web.entity.authorization;
 
-import org.hswebframework.web.commons.entity.CloneableEntity;
 import org.hswebframework.web.commons.entity.GenericEntity;
 import org.hswebframework.web.commons.entity.RecordCreationEntity;
 
-import java.util.Date;
-
 /**
  * TODO 完成注释
  *