From 7b5089a6f6bb5cb8339ef746aa92a863895e2a3d Mon Sep 17 00:00:00 2001 From: jarvis <649219050@qq.com> Date: Sun, 29 Jan 2023 22:04:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201.=20=E5=85=BC=E5=AE=B9=E6=97=A7?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=EF=BC=8C=E5=B0=86=E6=9D=83=E9=99=90=E6=94=B9?= =?UTF-8?q?=E6=88=90=E9=BB=98=E8=AE=A4=E8=AF=BB=E5=8F=96=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE2.=20=E9=85=8D=E7=BD=AE=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=E5=8E=9F=E6=9D=A5scopeColumn=E6=94=B9?= =?UTF-8?q?=E6=88=90creatorIdColumnName3.=E6=B7=BB=E5=8A=A0SYS=E5=BC=80?= =?UTF-8?q?=E5=A4=B4=E7=9A=84=E4=B8=8D=E8=BF=9B=E8=A1=8C=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/CreatorDataScopeSqlHandler.java | 12 ++++--- .../properties/DataScopeProperties.java | 34 ++++++++++++++++--- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/zlt-commons/zlt-common-core/src/main/java/com/central/common/datascope/mp/sql/handler/CreatorDataScopeSqlHandler.java b/zlt-commons/zlt-common-core/src/main/java/com/central/common/datascope/mp/sql/handler/CreatorDataScopeSqlHandler.java index abce4f2..b837a06 100644 --- a/zlt-commons/zlt-common-core/src/main/java/com/central/common/datascope/mp/sql/handler/CreatorDataScopeSqlHandler.java +++ b/zlt-commons/zlt-common-core/src/main/java/com/central/common/datascope/mp/sql/handler/CreatorDataScopeSqlHandler.java @@ -12,6 +12,7 @@ import com.central.common.properties.DataScopeProperties; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; +import java.util.Objects; /** * 个人权限的处理器 @@ -37,12 +38,13 @@ public class CreatorDataScopeSqlHandler implements SqlHandler{ SysUser user = LoginUserContextHolder.getUser(); Assert.notNull(user, "登陆人不能为空"); List roleList = userService.findRolesByUserId(user.getId()); - return StrUtil.isBlank(dataScopeProperties.getScopeColumn()) - ||(CollUtil.isNotEmpty(roleList)&& roleList.stream().anyMatch(item-> DataScope.ALL.equals(item.getDataScope()))) + return StrUtil.isBlank(dataScopeProperties.getCreatorIdColumnName()) + ||CollUtil.isEmpty(roleList) + || roleList.stream().anyMatch(item-> Objects.nonNull(item.getDataScope()) || DataScope.ALL.equals(item.getDataScope())) ? DO_NOTHING: // 这里确保有配置权限范围控制的字段 - // 1. 如果没有配置角色的情况默认采用只读个人创建的记录 - // 2. 如果有配置角色的话判断是否存在有ALL的情况,如果没有ALL的话读取个人创建记录 - String.format("%s.%s = '%s'", ALIAS_SYNBOL, dataScopeProperties.getScopeColumn(), user.getId()); + // 1. 如果没有配置角色的情况默认采用只读全部的记录 + // 2. 如果有配置角色的话判断是否存在有ALL获取null的情况,如果没有ALL的话读取个人创建记录 + String.format("%s.%s = '%s'", ALIAS_SYNBOL, dataScopeProperties.getCreatorIdColumnName(), user.getId()); } } diff --git a/zlt-commons/zlt-common-core/src/main/java/com/central/common/properties/DataScopeProperties.java b/zlt-commons/zlt-common-core/src/main/java/com/central/common/properties/DataScopeProperties.java index 28b73ae..e769255 100644 --- a/zlt-commons/zlt-common-core/src/main/java/com/central/common/properties/DataScopeProperties.java +++ b/zlt-commons/zlt-common-core/src/main/java/com/central/common/properties/DataScopeProperties.java @@ -1,11 +1,12 @@ package com.central.common.properties; +import cn.hutool.core.collection.CollUtil; import lombok.Data; +import lombok.Getter; import org.springframework.boot.context.properties.ConfigurationProperties; -import java.util.ArrayList; import java.util.Collections; -import java.util.List; +import java.util.HashSet; import java.util.Set; /** @@ -14,7 +15,7 @@ import java.util.Set; * @author jarvis create by 2023/1/8 */ @ConfigurationProperties(prefix = "zlt.datascope") -@Data +@Getter public class DataScopeProperties { /** * 是否开启权限控制 @@ -23,7 +24,7 @@ public class DataScopeProperties { /** * 在includeTables的匹配符中过滤某几个表不需要权限的,仅enabled=true */ - private Set ignoreTables = Collections.emptySet(); + private Set ignoreTables = Collections.singleton("SYS*"); /** * 指定某几条sql不执行权限控制, 仅enabled=true生效 */ @@ -36,5 +37,28 @@ public class DataScopeProperties { /** * 指定需要的字段名 */ - private String scopeColumn; + private String creatorIdColumnName; + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public void setIgnoreTables(Set ignoreTables) { + HashSet ignoreSet = new HashSet<>(); + CollUtil.addAll(ignoreSet, ignoreTables); + CollUtil.addAll(ignoreSet, this.ignoreTables); + this.ignoreTables = ignoreSet; + } + + public void setIgnoreSqls(Set ignoreSqls) { + this.ignoreSqls = ignoreSqls; + } + + public void setIncludeTables(Set includeTables) { + this.includeTables = includeTables; + } + + public void setCreatorIdColumnName(String creatorIdColumnName) { + this.creatorIdColumnName = creatorIdColumnName; + } } -- GitLab