Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
njgzx
dataease
Commits
d5a3276a
提交
d5a3276a
authored
1月 19, 2022
作者:
taojinlong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 数据集列权限
上级
5c351ea5
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
56 行增加
和
41 行删除
+56
-41
DataSetTableFieldController.java
...aease/controller/dataset/DataSetTableFieldController.java
+8
-1
ChartViewService.java
...main/java/io/dataease/service/chart/ChartViewService.java
+37
-32
DataSetTableService.java
...java/io/dataease/service/dataset/DataSetTableService.java
+2
-2
PermissionService.java
...n/java/io/dataease/service/dataset/PermissionService.java
+2
-2
DirectFieldService.java
...aease/service/dataset/impl/direct/DirectFieldService.java
+1
-1
en.js
frontend/src/lang/en.js
+2
-1
tw.js
frontend/src/lang/tw.js
+2
-1
zh.js
frontend/src/lang/zh.js
+2
-1
没有找到文件。
backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java
浏览文件 @
d5a3276a
...
...
@@ -14,6 +14,7 @@ import io.dataease.i18n.Translator;
import
io.dataease.service.dataset.DataSetFieldService
;
import
io.dataease.service.dataset.DataSetTableFieldsService
;
import
io.dataease.service.dataset.DataSetTableService
;
import
io.dataease.service.dataset.PermissionService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.commons.lang3.ObjectUtils
;
...
...
@@ -47,13 +48,17 @@ public class DataSetTableFieldController {
@Resource
private
DataSetTableService
dataSetTableService
;
@Resource
private
PermissionService
permissionService
;
@ApiOperation
(
"查询表下属字段"
)
@PostMapping
(
"list/{tableId}"
)
public
List
<
DatasetTableField
>
list
(
@PathVariable
String
tableId
)
{
DatasetTableField
datasetTableField
=
DatasetTableField
.
builder
().
build
();
datasetTableField
.
setTableId
(
tableId
);
return
dataSetTableFieldsService
.
list
(
datasetTableField
);
List
<
DatasetTableField
>
fields
=
dataSetTableFieldsService
.
list
(
datasetTableField
);
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
new
ArrayList
<>(),
tableId
,
null
);
return
fields
;
}
@ApiOperation
(
"分组查询表下属字段"
)
...
...
@@ -63,8 +68,10 @@ public class DataSetTableFieldController {
datasetTableField
.
setTableId
(
tableId
);
datasetTableField
.
setGroupType
(
"d"
);
List
<
DatasetTableField
>
dimensionList
=
dataSetTableFieldsService
.
list
(
datasetTableField
);
dimensionList
=
permissionService
.
filterColumnPermissons
(
dimensionList
,
new
ArrayList
<>(),
tableId
,
null
);
datasetTableField
.
setGroupType
(
"q"
);
List
<
DatasetTableField
>
quotaList
=
dataSetTableFieldsService
.
list
(
datasetTableField
);
quotaList
=
permissionService
.
filterColumnPermissons
(
quotaList
,
new
ArrayList
<>(),
tableId
,
null
);
DatasetTableField4Type
datasetTableField4Type
=
new
DatasetTableField4Type
();
datasetTableField4Type
.
setDimensionList
(
dimensionList
);
...
...
backend/src/main/java/io/dataease/service/chart/ChartViewService.java
浏览文件 @
d5a3276a
...
...
@@ -193,33 +193,31 @@ public class ChartViewService {
return
calcData
(
view
,
request
,
request
.
isCache
());
}
private
void
checkPermissions
(
List
<?
extends
ChartViewFieldBaseDTO
>
chartViewFieldDTOS
,
List
<
DatasetTableField
>
fields
,
List
<
String
>
desensitizationList
,
Boolean
alowDesensitization
)
throws
Exception
{
String
filedName
=
""
;
for
(
ChartViewFieldBaseDTO
chartViewFieldDTO
:
chartViewFieldDTOS
)
{
if
(
alowDesensitization
)
{
if
(!
fields
.
stream
().
map
(
DatasetTableField:
:
getDataeaseName
).
collect
(
Collectors
.
toList
()).
contains
(
chartViewFieldDTO
.
getDataeaseName
()))
{
filedName
=
filedName
+
chartViewFieldDTO
.
getName
()
+
" ,"
;
}
}
else
{
if
(
desensitizationList
.
contains
(
chartViewFieldDTO
.
getDataeaseName
())
||
!
fields
.
stream
().
map
(
DatasetTableField:
:
getDataeaseName
).
collect
(
Collectors
.
toList
()).
contains
(
chartViewFieldDTO
.
getDataeaseName
()))
{
filedName
=
filedName
+
chartViewFieldDTO
.
getName
()
+
" ,"
;
}
}
}
filedName
=
filedName
.
endsWith
(
","
)
?
filedName
.
substring
(
0
,
filedName
.
length
()
-
1
)
:
filedName
;
if
(
StringUtils
.
isNotEmpty
(
filedName
))
{
throw
new
Exception
(
"以下字段没有权限: "
+
filedName
);
}
}
// private void checkPermissions(List<? extends ChartViewFieldBaseDTO> chartViewFieldDTOS, List<DatasetTableField> fields, List<String> desensitizationList, Boolean alowDesensitization) throws Exception
{
//
String filedName = "";
//
for (ChartViewFieldBaseDTO chartViewFieldDTO : chartViewFieldDTOS) {
// if (alowDesensitization)
{
//
if (!fields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()).contains(chartViewFieldDTO.getDataeaseName())) {
//
filedName = filedName + chartViewFieldDTO.getName() + " ,";
//
}
// }
else {
//
if (desensitizationList.contains(chartViewFieldDTO.getDataeaseName()) || !fields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()).contains(chartViewFieldDTO.getDataeaseName())) {
//
filedName = filedName + chartViewFieldDTO.getName() + " ,";
//
}
//
}
//
}
//
filedName = filedName.endsWith(",") ? filedName.substring(0, filedName.length() - 1) : filedName;
// if (StringUtils.isNotEmpty(filedName))
{
//
throw new Exception("以下字段没有权限: " + filedName);
//
}
//
}
public
ChartViewDTO
calcData
(
ChartViewDTO
view
,
ChartExtRequest
requestList
,
boolean
cache
)
throws
Exception
{
if
(
ObjectUtils
.
isEmpty
(
view
))
{
throw
new
RuntimeException
(
Translator
.
get
(
"i18n_chart_delete"
));
}
List
<
ChartViewFieldDTO
>
xAxis
=
new
Gson
().
fromJson
(
view
.
getXAxis
(),
new
TypeToken
<
List
<
ChartViewFieldDTO
>>()
{
}.
getType
());
List
<
ChartViewFieldDTO
>
yAxis
=
new
Gson
().
fromJson
(
view
.
getYAxis
(),
new
TypeToken
<
List
<
ChartViewFieldDTO
>>()
{
}.
getType
());
List
<
ChartViewFieldDTO
>
xAxis
=
new
Gson
().
fromJson
(
view
.
getXAxis
(),
new
TypeToken
<
List
<
ChartViewFieldDTO
>>()
{}.
getType
());
List
<
ChartViewFieldDTO
>
yAxis
=
new
Gson
().
fromJson
(
view
.
getYAxis
(),
new
TypeToken
<
List
<
ChartViewFieldDTO
>>()
{}.
getType
());
if
(
StringUtils
.
equalsIgnoreCase
(
view
.
getType
(),
"chart-mix"
))
{
List
<
ChartViewFieldDTO
>
yAxisExt
=
new
Gson
().
fromJson
(
view
.
getYAxisExt
(),
new
TypeToken
<
List
<
ChartViewFieldDTO
>>()
{
}.
getType
());
...
...
@@ -241,8 +239,15 @@ public class ChartViewService {
//列权限
List
<
String
>
desensitizationList
=
new
ArrayList
<>();
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
,
null
);
checkPermissions
(
fieldCustomFilter
,
fields
,
desensitizationList
,
false
);
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
.
getId
(),
requestList
.
getUser
());
//将没有权限的列删掉
List
<
String
>
dataeaseNames
=
fields
.
stream
().
map
(
DatasetTableField:
:
getDataeaseName
).
collect
(
Collectors
.
toList
());
fieldCustomFilter
=
fieldCustomFilter
.
stream
().
filter
(
item
->
!
desensitizationList
.
contains
(
item
.
getDataeaseName
())
&&
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
());
extStack
=
extStack
.
stream
().
filter
(
item
->
!
desensitizationList
.
contains
(
item
.
getDataeaseName
())
&&
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
());
extBubble
=
extBubble
.
stream
().
filter
(
item
->
!
desensitizationList
.
contains
(
item
.
getDataeaseName
())
&&
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
());
drill
=
drill
.
stream
().
filter
(
item
->
!
desensitizationList
.
contains
(
item
.
getDataeaseName
())
&&
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
());
//行权限
List
<
ChartFieldCustomFilterDTO
>
permissionFields
=
permissionService
.
getCustomFilters
(
fields
,
datasetTable
,
requestList
.
getUser
());
fieldCustomFilter
.
addAll
(
permissionFields
);
...
...
@@ -255,30 +260,30 @@ public class ChartViewService {
return
emptyChartViewDTO
(
view
);
}
switch
(
view
.
getType
()){
switch
(
view
.
getType
())
{
case
"text"
:
case
"gauge"
:
case
"liquid"
:
xAxis
=
new
ArrayList
<>();
checkPermissions
(
yAxis
,
fields
,
desensitizationList
,
false
);
yAxis
=
yAxis
.
stream
().
filter
(
item
->
!
desensitizationList
.
contains
(
item
.
getDataeaseName
())
&&
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
()
);
if
(
CollectionUtils
.
isEmpty
(
yAxis
))
{
return
emptyChartViewDTO
(
view
);
}
break
;
case
"table-info"
:
yAxis
=
new
ArrayList
<>();
checkPermissions
(
xAxis
,
fields
,
desensitizationList
,
true
);
xAxis
=
xAxis
.
stream
().
filter
(
item
->
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
()
);
if
(
CollectionUtils
.
isEmpty
(
xAxis
))
{
return
emptyChartViewDTO
(
view
);
}
break
;
case
"table-normal"
:
checkPermissions
(
xAxis
,
fields
,
desensitizationList
,
true
);
checkPermissions
(
yAxis
,
fields
,
desensitizationList
,
true
);
xAxis
=
xAxis
.
stream
().
filter
(
item
->
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
()
);
yAxis
=
yAxis
.
stream
().
filter
(
item
->
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
()
);
break
;
default
:
checkPermissions
(
xAxis
,
fields
,
desensitizationList
,
false
);
checkPermissions
(
yAxis
,
fields
,
desensitizationList
,
false
);
xAxis
=
xAxis
.
stream
().
filter
(
item
->
!
desensitizationList
.
contains
(
item
.
getDataeaseName
())
&&
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
()
);
yAxis
=
yAxis
.
stream
().
filter
(
item
->
!
desensitizationList
.
contains
(
item
.
getDataeaseName
())
&&
dataeaseNames
.
contains
(
item
.
getDataeaseName
())).
collect
(
Collectors
.
toList
()
);
}
// 过滤来自仪表板的条件
...
...
@@ -1570,7 +1575,7 @@ public class ChartViewService {
data
.
forEach
(
ele
->
{
Map
<
String
,
Object
>
d
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
fields
.
size
();
i
++)
{
if
(
CollectionUtils
.
isNotEmpty
(
desensitizationList
)
&&
desensitizationList
.
contains
(
fields
.
get
(
i
).
getDataeaseName
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
desensitizationList
)
&&
desensitizationList
.
contains
(
fields
.
get
(
i
).
getDataeaseName
()))
{
d
.
put
(
fields
.
get
(
i
).
getDataeaseName
(),
ColumnPermissionConstants
.
Desensitization_desc
);
continue
;
}
...
...
backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
浏览文件 @
d5a3276a
...
...
@@ -399,7 +399,7 @@ public class DataSetTableService {
datasetTableField
.
setTableId
(
dataSetTableRequest
.
getId
());
datasetTableField
.
setChecked
(
Boolean
.
TRUE
);
List
<
DatasetTableField
>
fields
=
dataSetTableFieldsService
.
list
(
datasetTableField
);
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
new
ArrayList
<>(),
dataSetTableRequest
.
getId
(),
null
);
List
<
DatasetTableField
>
dimension
=
new
ArrayList
<>();
List
<
DatasetTableField
>
quota
=
new
ArrayList
<>();
...
...
@@ -450,7 +450,7 @@ public class DataSetTableService {
DatasetTable
datasetTable
=
datasetTableMapper
.
selectByPrimaryKey
(
dataSetTableRequest
.
getId
());
//列权限
List
<
String
>
desensitizationList
=
new
ArrayList
<>();
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
,
null
);
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
.
getId
()
,
null
);
//行权限
List
<
ChartFieldCustomFilterDTO
>
customFilter
=
permissionService
.
getCustomFilters
(
fields
,
datasetTable
,
null
);
String
[]
fieldArray
=
fields
.
stream
().
map
(
DatasetTableField:
:
getDataeaseName
).
toArray
(
String
[]::
new
);
...
...
backend/src/main/java/io/dataease/service/dataset/PermissionService.java
浏览文件 @
d5a3276a
...
...
@@ -64,10 +64,10 @@ public class PermissionService {
return
customFilter
;
}
public
List
<
DatasetTableField
>
filterColumnPermissons
(
List
<
DatasetTableField
>
fields
,
List
<
String
>
desensitizationList
,
DatasetTable
datasetTable
,
Long
user
){
public
List
<
DatasetTableField
>
filterColumnPermissons
(
List
<
DatasetTableField
>
fields
,
List
<
String
>
desensitizationList
,
String
datasetTableId
,
Long
user
){
List
<
DatasetTableField
>
result
=
new
ArrayList
<>();
List
<
ColumnPermissionItem
>
allColumnPermissionItems
=
new
ArrayList
<>();
for
(
DataSetColumnPermissionsDTO
dataSetColumnPermissionsDTO
:
columnPermissions
(
datasetTable
.
getId
()
,
user
))
{
for
(
DataSetColumnPermissionsDTO
dataSetColumnPermissionsDTO
:
columnPermissions
(
datasetTable
Id
,
user
))
{
ColumnPermissions
columnPermissions
=
JSONObject
.
parseObject
(
dataSetColumnPermissionsDTO
.
getPermissions
(),
ColumnPermissions
.
class
);
if
(!
columnPermissions
.
getEnable
()){
continue
;}
allColumnPermissionItems
.
addAll
(
columnPermissions
.
getColumns
().
stream
().
filter
(
columnPermissionItem
->
columnPermissionItem
.
getSelected
()).
collect
(
Collectors
.
toList
()));
...
...
backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java
浏览文件 @
d5a3276a
...
...
@@ -54,7 +54,7 @@ public class DirectFieldService implements DataSetFieldService {
//列权限
List
<
String
>
desensitizationList
=
new
ArrayList
<>();
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
,
userId
);
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
.
getId
()
,
userId
);
if
(
CollectionUtils
.
isNotEmpty
(
desensitizationList
)
&&
desensitizationList
.
contains
(
field
.
getDataeaseName
()))
{
List
<
Object
>
results
=
new
ArrayList
<>();
...
...
frontend/src/lang/en.js
浏览文件 @
d5a3276a
...
...
@@ -1215,7 +1215,8 @@ export default {
column_permission_not_empty
:
'Please select authorization target'
,
auth_type
:
'Authorization type'
,
auth_obj
:
'Authorized object'
,
enable
:
'Enable column permissions'
,
enable
:
'Enable'
,
disable
:
'Disable'
,
prohibit
:
'Prohibit'
,
desensitization
:
'Desensitization'
},
...
...
frontend/src/lang/tw.js
浏览文件 @
d5a3276a
...
...
@@ -1215,7 +1215,8 @@ export default {
column_permission_not_empty
:
'列權限不能為空'
,
auth_type
:
'授權類型'
,
auth_obj
:
'授權對象'
,
enable
:
'啟用列權限'
,
enable
:
'啟用'
,
disable
:
'禁用'
,
prohibit
:
'禁用'
,
desensitization
:
'脫敏'
},
...
...
frontend/src/lang/zh.js
浏览文件 @
d5a3276a
...
...
@@ -1218,7 +1218,8 @@ export default {
column_permission_not_empty
:
'列权限不能为空'
,
auth_type
:
'授权类型'
,
auth_obj
:
'授权对象'
,
enable
:
'启用列权限'
,
enable
:
'启用'
,
disable
:
'禁用'
,
prohibit
:
'禁用'
,
desensitization
:
'脱敏'
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论