diff --git a/cloud-common/cloud-common-datascope/cloud-common-datascope/pom.xml b/cloud-common/cloud-common-datascope/cloud-common-datascope/pom.xml deleted file mode 100644 index a7681bb..0000000 --- a/cloud-common/cloud-common-datascope/cloud-common-datascope/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - com.muyu - cloud-common - 3.6.3 - - 4.0.0 - - cloud-common-datascope - - - cloud-common-datascope权限范围 - - - - - - - com.muyu - cloud-common-security - - - - diff --git a/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/java/com/muyu/common/datascope/annotation/DataScope.java b/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/java/com/muyu/common/datascope/annotation/DataScope.java deleted file mode 100644 index 498f06b..0000000 --- a/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/java/com/muyu/common/datascope/annotation/DataScope.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.muyu.common.datascope.annotation; - -import java.lang.annotation.*; - -/** - * 数据权限过滤注解 - * - * @author muyu - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface DataScope { - /** - * 部门表的别名 - */ - public String deptAlias () default ""; - - /** - * 用户表的别名 - */ - public String userAlias () default ""; - - /** - * 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@RequiresPermissions获取,多个权限用逗号分隔开来 - */ - public String permission () default ""; -} diff --git a/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java b/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java deleted file mode 100644 index 3d66b0d..0000000 --- a/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.muyu.common.datascope.aspect; - -import com.muyu.common.core.context.SecurityContextHolder; -import com.muyu.common.core.text.Convert; -import com.muyu.common.core.utils.StringUtils; -import com.muyu.common.core.web.domain.BaseEntity; -import com.muyu.common.datascope.annotation.DataScope; -import com.muyu.common.security.utils.SecurityUtils; -import com.muyu.common.system.domain.SysRole; -import com.muyu.common.system.domain.SysUser; -import com.muyu.common.system.domain.LoginUser; -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * 数据过滤处理 - * - * @author muyu - */ -@Aspect -@Component -public class DataScopeAspect { - /** - * 全部数据权限 - */ - public static final String DATA_SCOPE_ALL = "1"; - - /** - * 自定数据权限 - */ - public static final String DATA_SCOPE_CUSTOM = "2"; - - /** - * 部门数据权限 - */ - public static final String DATA_SCOPE_DEPT = "3"; - - /** - * 部门及以下数据权限 - */ - public static final String DATA_SCOPE_DEPT_AND_CHILD = "4"; - - /** - * 仅本人数据权限 - */ - public static final String DATA_SCOPE_SELF = "5"; - - /** - * 数据权限过滤关键字 - */ - public static final String DATA_SCOPE = "dataScope"; - - /** - * 数据范围过滤 - * - * @param joinPoint 切点 - * @param user 用户 - * @param deptAlias 部门别名 - * @param userAlias 用户别名 - * @param permission 权限字符 - */ - public static void dataScopeFilter (JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String permission) { - StringBuilder sqlString = new StringBuilder(); - List conditions = new ArrayList(); - - for (SysRole role : user.getRoles()) { - String dataScope = role.getDataScope(); - if (!DATA_SCOPE_CUSTOM.equals(dataScope) && conditions.contains(dataScope)) { - continue; - } - if (StringUtils.isNotEmpty(permission) && StringUtils.isNotEmpty(role.getPermissions()) - && !StringUtils.containsAny(role.getPermissions(), Convert.toStrArray(permission))) { - continue; - } - if (DATA_SCOPE_ALL.equals(dataScope)) { - sqlString = new StringBuilder(); - conditions.add(dataScope); - break; - } else if (DATA_SCOPE_CUSTOM.equals(dataScope)) { - sqlString.append(StringUtils.format( - " OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", deptAlias, - role.getRoleId())); - } else if (DATA_SCOPE_DEPT.equals(dataScope)) { - sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); - } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) { - sqlString.append(StringUtils.format( - " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", - deptAlias, user.getDeptId(), user.getDeptId())); - } else if (DATA_SCOPE_SELF.equals(dataScope)) { - if (StringUtils.isNotBlank(userAlias)) { - sqlString.append(StringUtils.format(" OR {}.user_id = {} ", userAlias, user.getUserId())); - } else { - // 数据权限为仅本人且没有userAlias别名不查询任何数据 - sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias)); - } - } - conditions.add(dataScope); - } - - // 多角色情况下,所有角色都不包含传递过来的权限字符,这个时候sqlString也会为空,所以要限制一下,不查询任何数据 - if (StringUtils.isEmpty(conditions)) { - sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias)); - } - - if (StringUtils.isNotBlank(sqlString.toString())) { - Object params = joinPoint.getArgs()[0]; - if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { - BaseEntity baseEntity = (BaseEntity) params; - baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); - } - } - } - - @Before("@annotation(controllerDataScope)") - public void doBefore (JoinPoint point, DataScope controllerDataScope) throws Throwable { - clearDataScope(point); - handleDataScope(point, controllerDataScope); - } - - protected void handleDataScope (final JoinPoint joinPoint, DataScope controllerDataScope) { - // 获取当前的用户 - LoginUser loginUser = SecurityUtils.getLoginUser(); - if (StringUtils.isNotNull(loginUser)) { - SysUser currentUser = loginUser.getSysUser(); - // 如果是超级管理员,则不过滤数据 - if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) { - String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), SecurityContextHolder.getPermission()); - dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(), - controllerDataScope.userAlias(), permission); - } - } - } - - /** - * 拼接权限sql前先清空params.dataScope参数防止注入 - */ - private void clearDataScope (final JoinPoint joinPoint) { - Object params = joinPoint.getArgs()[0]; - if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { - BaseEntity baseEntity = (BaseEntity) params; - baseEntity.getParams().put(DATA_SCOPE, ""); - } - } -} diff --git a/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 8f4967b..0000000 --- a/cloud-common/cloud-common-datascope/cloud-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -com.muyu.common.datascope.aspect.DataScopeAspect diff --git a/cloud-gateway/src/main/resources/bootstrap.yml b/cloud-gateway/src/main/resources/bootstrap.yml index ae3ee7b..b387801 100644 --- a/cloud-gateway/src/main/resources/bootstrap.yml +++ b/cloud-gateway/src/main/resources/bootstrap.yml @@ -45,31 +45,3 @@ spring: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # 系统环境Config共享配置 - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - sentinel: - # 取消控制台懒加载 - eager: true - transport: - # 控制台地址 - dashboard: 127.0.0.1:8718 - # nacos配置持久化 - datasource: - ds1: - nacos: - server-addr: ${nacos.addr} - dataId: sentinel-cloud-gateway - groupId: DEFAULT_GROUP - namespace: ${nacos.namespace} - data-type: json - rule-type: gw-flow -knife4j: - gateway: - enabled: true - # 指定服务发现的模式聚合微服务文档,并且是默认`default`分组 - strategy: discover - discover: - enabled: true - # 指定版本号(Swagger2|OpenAPI3) - version : openapi3 - # 需要排除的微服务(eg:网关服务) - excluded-services: - - cloud-monitor