|
@@ -28,6 +28,7 @@ import org.springblade.cube.dto.CubeTableName;
|
|
import org.springblade.cube.enums.JoinTypeEnum;
|
|
import org.springblade.cube.enums.JoinTypeEnum;
|
|
import org.springblade.cube.model.CubeData;
|
|
import org.springblade.cube.model.CubeData;
|
|
import org.springblade.cube.model.CubeTableColumn;
|
|
import org.springblade.cube.model.CubeTableColumn;
|
|
|
|
+import org.springblade.cube.service.constants.RowPermissionConstants;
|
|
import org.springblade.cube.utils.CubeConstants;
|
|
import org.springblade.cube.utils.CubeConstants;
|
|
import org.springblade.cube.utils.CubeUtils;
|
|
import org.springblade.cube.utils.CubeUtils;
|
|
import org.springblade.datasource.context.DialectContext;
|
|
import org.springblade.datasource.context.DialectContext;
|
|
@@ -80,28 +81,18 @@ public class CubeDataBrowserService {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private DialectContext dialectContext;
|
|
private DialectContext dialectContext;
|
|
- //${系统变量}
|
|
|
|
- static private final String sql = " ( ${permissionCubeColumnId1} = ${publicPermission} or ( ${creatorUserCubeColumnId} = ${userId1} ) or ( ${userIdsCubeColumnId} like '%${userId2}${userIdDelimiter}%' and ${permissionCubeColumnId2} = ${privatePermission} ) )";
|
|
|
|
- //${系统变量}
|
|
|
|
- static private final String permissionCubeColumnId1 = "\\$\\{permissionCubeColumnId1\\}";
|
|
|
|
- static private final String publicPermission = "\\$\\{publicPermission\\}";
|
|
|
|
- static private final String permissionCubeColumnId2 = "\\$\\{permissionCubeColumnId2\\}";
|
|
|
|
- static private final String privatePermission = "\\$\\{privatePermission\\}";
|
|
|
|
- static private final String userIdsCubeColumnId = "\\$\\{userIdsCubeColumnId\\}";
|
|
|
|
- static private final String userId1 = "\\$\\{userId1\\}";
|
|
|
|
- static private final String userId2 = "\\$\\{userId2\\}";
|
|
|
|
- static private final String userIdDelimiter = "\\$\\{userIdDelimiter\\}";
|
|
|
|
- static private final String creatorUserCubeColumnId = "\\$\\{creatorUserCubeColumnId\\}";
|
|
|
|
|
|
+
|
|
|
|
|
|
public static void main(String[] args) {
|
|
public static void main(String[] args) {
|
|
// 创建一个Pattern对象,并编译一个正则表达式,用于匹配方括号内的内容
|
|
// 创建一个Pattern对象,并编译一个正则表达式,用于匹配方括号内的内容
|
|
- Pattern pattern = Pattern.compile(permissionCubeColumnId1);
|
|
|
|
|
|
+
|
|
|
|
+ Pattern pattern = Pattern.compile(RowPermissionConstants.permissionCubeColumnId1);
|
|
// 创建Matcher对象
|
|
// 创建Matcher对象
|
|
- Matcher matcher = pattern.matcher(sql);
|
|
|
|
|
|
+ Matcher matcher = pattern.matcher(RowPermissionConstants.sql);
|
|
// 查找字符串中所有匹配的内容
|
|
// 查找字符串中所有匹配的内容
|
|
while (matcher.find()) {
|
|
while (matcher.find()) {
|
|
// 将匹配到的文本(不包括方括号)添加到List中
|
|
// 将匹配到的文本(不包括方括号)添加到List中
|
|
- String s = sql.replace(matcher.group(), "2r");
|
|
|
|
|
|
+ String s = RowPermissionConstants.sql.replace(matcher.group(), "2r");
|
|
System.out.println(s);
|
|
System.out.println(s);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -153,7 +144,7 @@ public class CubeDataBrowserService {
|
|
// 条件SQL
|
|
// 条件SQL
|
|
List<String> conditionSqlList = new ArrayList<String>();
|
|
List<String> conditionSqlList = new ArrayList<String>();
|
|
Map<String, String> conditionSqlMap = new HashMap<>();
|
|
Map<String, String> conditionSqlMap = new HashMap<>();
|
|
- String rowPermissionSql = sql;
|
|
|
|
|
|
+ String rowPermissionSql = RowPermissionConstants.sql;
|
|
Map<String, List<Object>> extraParams = querySqlService.buildGlobalParams(null, bladeUser);
|
|
Map<String, List<Object>> extraParams = querySqlService.buildGlobalParams(null, bladeUser);
|
|
// 行/列 权限
|
|
// 行/列 权限
|
|
CubePermParseDto cubePermParseDto = cubeDataPermissionService.parseCubePermission(cubeId, bladeUser);
|
|
CubePermParseDto cubePermParseDto = cubeDataPermissionService.parseCubePermission(cubeId, bladeUser);
|
|
@@ -250,19 +241,27 @@ public class CubeDataBrowserService {
|
|
private static String replaceRowPermissionParam(RowPermissionParam rowPermissionParam, CubeTableColumn column, String queryColumnName, String rowPermissionSql) {
|
|
private static String replaceRowPermissionParam(RowPermissionParam rowPermissionParam, CubeTableColumn column, String queryColumnName, String rowPermissionSql) {
|
|
|
|
|
|
if (rowPermissionParam.getPermissionCubeColumnId().equals(column.getId())) {
|
|
if (rowPermissionParam.getPermissionCubeColumnId().equals(column.getId())) {
|
|
- rowPermissionSql = replaceSql(permissionCubeColumnId1, queryColumnName, rowPermissionSql);
|
|
|
|
- rowPermissionSql = replaceSql(publicPermission, rowPermissionParam.getPublicPermission(), rowPermissionSql);
|
|
|
|
- rowPermissionSql = replaceSql(permissionCubeColumnId2, queryColumnName, rowPermissionSql);
|
|
|
|
- rowPermissionSql = replaceSql(privatePermission, rowPermissionParam.getPrivatePermission(), rowPermissionSql);
|
|
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.permissionCubeColumnId1, queryColumnName, rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.publicPermission, rowPermissionParam.getPublicPermission(), rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.permissionCubeColumnId2, queryColumnName, rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.privatePermission1, rowPermissionParam.getPrivatePermission(), rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.permissionCubeColumnId3, queryColumnName, rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.privatePermission2, rowPermissionParam.getPrivatePermission(), rowPermissionSql);
|
|
}
|
|
}
|
|
if (rowPermissionParam.getUserIdsCubeColumnId().equals(column.getId())) {
|
|
if (rowPermissionParam.getUserIdsCubeColumnId().equals(column.getId())) {
|
|
- rowPermissionSql = replaceSql(userIdsCubeColumnId, queryColumnName, rowPermissionSql);
|
|
|
|
- rowPermissionSql = replaceSql(userId2, AuthUtil.getUserId() + "", rowPermissionSql);
|
|
|
|
- rowPermissionSql = replaceSql(userIdDelimiter, rowPermissionParam.getUserIdDelimiter(), rowPermissionSql);
|
|
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.userIdsCubeColumnId, queryColumnName, rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.userId2, AuthUtil.getUserId() + "", rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.userIdDelimiter1, rowPermissionParam.getUserIdDelimiter(), rowPermissionSql);
|
|
}
|
|
}
|
|
if (rowPermissionParam.getCreatorUserCubeColumnId().equals(column.getId())) {
|
|
if (rowPermissionParam.getCreatorUserCubeColumnId().equals(column.getId())) {
|
|
- rowPermissionSql = replaceSql(creatorUserCubeColumnId, queryColumnName, rowPermissionSql);
|
|
|
|
- rowPermissionSql = replaceSql(userId1, AuthUtil.getUserId() + "", rowPermissionSql);
|
|
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.creatorUserCubeColumnId, queryColumnName, rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.userId1, AuthUtil.getUserId() + "", rowPermissionSql);
|
|
|
|
+ }
|
|
|
|
+ if (rowPermissionParam.getDeptIdsCubeColumnId().equals(column.getId())) {
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.deptIdsCubeColumnId, queryColumnName, rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.deptId, AuthUtil.getDeptId(), rowPermissionSql);
|
|
|
|
+ rowPermissionSql = replaceSql(RowPermissionConstants.userIdDelimiter2, rowPermissionParam.getUserIdDelimiter(), rowPermissionSql);
|
|
|
|
+
|
|
}
|
|
}
|
|
return rowPermissionSql;
|
|
return rowPermissionSql;
|
|
}
|
|
}
|
|
@@ -320,7 +319,7 @@ public class CubeDataBrowserService {
|
|
// 条件SQL
|
|
// 条件SQL
|
|
List<String> conditionSqlList = new ArrayList<String>();
|
|
List<String> conditionSqlList = new ArrayList<String>();
|
|
Map<String, String> conditionSqlMap = new HashMap<>();
|
|
Map<String, String> conditionSqlMap = new HashMap<>();
|
|
- String rowPermissionSql = sql;
|
|
|
|
|
|
+ String rowPermissionSql = RowPermissionConstants.sql;
|
|
if (rowPermissionParam == null) {
|
|
if (rowPermissionParam == null) {
|
|
rowPermissionSql = " where ";
|
|
rowPermissionSql = " where ";
|
|
}
|
|
}
|
|
@@ -488,7 +487,7 @@ public class CubeDataBrowserService {
|
|
List<String> selectSqlList = new ArrayList<String>();
|
|
List<String> selectSqlList = new ArrayList<String>();
|
|
// 条件SQL
|
|
// 条件SQL
|
|
List<String> conditionSqlList = new ArrayList<String>();
|
|
List<String> conditionSqlList = new ArrayList<String>();
|
|
- String rowPermissionSql = sql;
|
|
|
|
|
|
+ String rowPermissionSql = RowPermissionConstants.sql;
|
|
if (rowPermissionParam == null) {
|
|
if (rowPermissionParam == null) {
|
|
rowPermissionSql = " where ";
|
|
rowPermissionSql = " where ";
|
|
}
|
|
}
|
|
@@ -655,7 +654,7 @@ public class CubeDataBrowserService {
|
|
// 行/列 权限
|
|
// 行/列 权限
|
|
CubePermParseDto cubePermParseDto = cubeDataPermissionService.parseCubePermission(cubeId, bladeUser);
|
|
CubePermParseDto cubePermParseDto = cubeDataPermissionService.parseCubePermission(cubeId, bladeUser);
|
|
Set<Integer> excludeColumnIdSet = Optional.ofNullable(cubePermParseDto.getExcludeColumnIdList()).orElse(new HashSet<>());
|
|
Set<Integer> excludeColumnIdSet = Optional.ofNullable(cubePermParseDto.getExcludeColumnIdList()).orElse(new HashSet<>());
|
|
- String rowPermissionSql = sql;
|
|
|
|
|
|
+ String rowPermissionSql = RowPermissionConstants.sql;
|
|
if (rowPermissionParam == null) {
|
|
if (rowPermissionParam == null) {
|
|
rowPermissionSql = " where ";
|
|
rowPermissionSql = " where ";
|
|
}
|
|
}
|