Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
zhu
dataease
Commits
7d90a503
提交
7d90a503
authored
1月 17, 2022
作者:
taojinlong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 数据集列权限
上级
d5164d59
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
388 行增加
和
167 行删除
+388
-167
pom.xml
backend/pom.xml
+1
-1
ColumnPermissionConstants.java
...dataease/commons/constants/ColumnPermissionConstants.java
+10
-0
DefaultLicenseService.java
...va/io/dataease/commons/license/DefaultLicenseService.java
+1
-1
ChartViewService.java
...main/java/io/dataease/service/chart/ChartViewService.java
+77
-28
DataSetTableFieldsService.java
...o/dataease/service/dataset/DataSetTableFieldsService.java
+4
-0
DataSetTableService.java
...java/io/dataease/service/dataset/DataSetTableService.java
+13
-117
PermissionService.java
...n/java/io/dataease/service/dataset/PermissionService.java
+202
-0
DirectFieldService.java
...aease/service/dataset/impl/direct/DirectFieldService.java
+23
-19
V31__1.7.sql
backend/src/main/resources/db/migration/V31__1.7.sql
+10
-0
generatorConfig.xml
backend/src/main/resources/generatorConfig.xml
+1
-1
en.js
frontend/src/lang/en.js
+14
-0
tw.js
frontend/src/lang/tw.js
+14
-0
zh.js
frontend/src/lang/zh.js
+15
-0
ViewTable.vue
frontend/src/views/dataset/data/ViewTable.vue
+3
-0
没有找到文件。
backend/pom.xml
浏览文件 @
7d90a503
...
...
@@ -207,7 +207,7 @@
<dependency>
<groupId>
io.dataease
</groupId>
<artifactId>
dataease-plugin-interface
</artifactId>
<version>
1.
6
</version>
<version>
1.
7
</version>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
...
...
backend/src/main/java/io/dataease/commons/constants/ColumnPermissionConstants.java
0 → 100644
浏览文件 @
7d90a503
package
io
.
dataease
.
commons
.
constants
;
public
class
ColumnPermissionConstants
{
public
final
static
String
Prohibit
=
"Prohibit"
;
public
final
static
String
Desensitization
=
"Desensitization"
;
public
final
static
String
Desensitization_desc
=
"******"
;
}
backend/src/main/java/io/dataease/commons/license/DefaultLicenseService.java
浏览文件 @
7d90a503
...
...
@@ -19,7 +19,7 @@ public class DefaultLicenseService {
private
InnerLicenseService
innerLicenseService
;
private
static
final
String
LICENSE_ID
=
"fit2cloud_license"
;
private
static
final
String
validatorUtil
=
"/usr/bin/validator"
;
private
static
final
String
validatorUtil
=
"/usr/
local/
bin/validator"
;
private
static
final
String
product
=
"DataEase"
;
public
F2CLicenseResponse
validateLicense
(
String
product
,
String
licenseKey
)
{
...
...
backend/src/main/java/io/dataease/service/chart/ChartViewService.java
浏览文件 @
7d90a503
...
...
@@ -6,6 +6,7 @@ import io.dataease.base.domain.*;
import
io.dataease.base.mapper.ChartViewMapper
;
import
io.dataease.base.mapper.ext.ExtChartGroupMapper
;
import
io.dataease.base.mapper.ext.ExtChartViewMapper
;
import
io.dataease.commons.constants.ColumnPermissionConstants
;
import
io.dataease.commons.constants.CommonConstants
;
import
io.dataease.commons.constants.JdbcConstants
;
import
io.dataease.commons.utils.AuthUtils
;
...
...
@@ -27,6 +28,7 @@ import io.dataease.provider.query.QueryProvider;
import
io.dataease.service.dataset.DataSetTableFieldsService
;
import
io.dataease.service.dataset.DataSetTableService
;
import
io.dataease.service.dataset.DataSetTableUnionService
;
import
io.dataease.service.dataset.PermissionService
;
import
io.dataease.service.datasource.DatasourceService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
...
...
@@ -41,6 +43,8 @@ import java.util.*;
import
java.util.concurrent.locks.ReentrantLock
;
import
java.util.stream.Collectors
;
import
static
io
.
dataease
.
commons
.
constants
.
ColumnPermissionConstants
.
Desensitization_desc
;
/**
* @Author gin
* @Date 2021/3/1 12:34 下午
...
...
@@ -61,6 +65,8 @@ public class ChartViewService {
private
ExtChartGroupMapper
extChartGroupMapper
;
@Resource
private
DataSetTableUnionService
dataSetTableUnionService
;
@Resource
private
PermissionService
permissionService
;
//默认使用非公平
private
ReentrantLock
lock
=
new
ReentrantLock
();
...
...
@@ -187,6 +193,25 @@ 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
);
}
}
public
ChartViewDTO
calcData
(
ChartViewDTO
view
,
ChartExtRequest
requestList
,
boolean
cache
)
throws
Exception
{
if
(
ObjectUtils
.
isEmpty
(
view
))
{
throw
new
RuntimeException
(
Translator
.
get
(
"i18n_chart_delete"
));
...
...
@@ -208,39 +233,52 @@ public class ChartViewService {
}.
getType
());
List
<
ChartViewFieldDTO
>
drill
=
new
Gson
().
fromJson
(
view
.
getDrillFields
(),
new
TypeToken
<
List
<
ChartViewFieldDTO
>>()
{
}.
getType
());
// 获取对应数据集行权限
DatasetTableField
datasetTableFieldObj
=
DatasetTableField
.
builder
().
tableId
(
view
.
getTableId
()).
checked
(
Boolean
.
TRUE
).
build
();
List
<
DatasetTableField
>
fields
=
dataSetTableFieldsService
.
list
(
datasetTableFieldObj
);
DatasetTable
datasetTable
=
dataSetTableService
.
get
(
view
.
getTableId
());
List
<
ChartFieldCustomFilterDTO
>
permissionFields
=
dataSetTableService
.
getCustomFilters
(
fields
,
datasetTable
,
requestList
.
getUser
());
//列权限
List
<
String
>
desensitizationList
=
new
ArrayList
<>();
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
,
null
);
checkPermissions
(
fieldCustomFilter
,
fields
,
desensitizationList
,
false
);
//行权限
List
<
ChartFieldCustomFilterDTO
>
permissionFields
=
permissionService
.
getCustomFilters
(
fields
,
datasetTable
,
requestList
.
getUser
());
fieldCustomFilter
.
addAll
(
permissionFields
);
for
(
ChartFieldCustomFilterDTO
ele
:
fieldCustomFilter
)
{
ele
.
setField
(
dataSetTableFieldsService
.
get
(
ele
.
getId
()));
}
if
(
StringUtils
.
equalsIgnoreCase
(
"text"
,
view
.
getType
())
||
StringUtils
.
equalsIgnoreCase
(
"gauge"
,
view
.
getType
())
||
StringUtils
.
equalsIgnoreCase
(
"liquid"
,
view
.
getType
()))
{
xAxis
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isEmpty
(
yAxis
))
{
ChartViewDTO
dto
=
new
ChartViewDTO
();
BeanUtils
.
copyBean
(
dto
,
view
);
return
dto
;
}
}
else
if
(
StringUtils
.
equalsIgnoreCase
(
"table-info"
,
view
.
getType
()))
{
yAxis
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isEmpty
(
xAxis
))
{
ChartViewDTO
dto
=
new
ChartViewDTO
();
BeanUtils
.
copyBean
(
dto
,
view
);
return
dto
;
}
}
else
{
if
(
CollectionUtils
.
isEmpty
(
xAxis
)
&&
CollectionUtils
.
isEmpty
(
yAxis
))
{
ChartViewDTO
dto
=
new
ChartViewDTO
();
BeanUtils
.
copyBean
(
dto
,
view
);
return
dto
;
}
if
(
CollectionUtils
.
isEmpty
(
xAxis
)
&&
CollectionUtils
.
isEmpty
(
yAxis
))
{
return
emptyChartViewDTO
(
view
);
}
switch
(
view
.
getType
()){
case
"text"
:
case
"gauge"
:
case
"liquid"
:
xAxis
=
new
ArrayList
<>();
checkPermissions
(
yAxis
,
fields
,
desensitizationList
,
false
);
if
(
CollectionUtils
.
isEmpty
(
yAxis
))
{
return
emptyChartViewDTO
(
view
);
}
break
;
case
"table-info"
:
yAxis
=
new
ArrayList
<>();
checkPermissions
(
xAxis
,
fields
,
desensitizationList
,
true
);
if
(
CollectionUtils
.
isEmpty
(
xAxis
))
{
return
emptyChartViewDTO
(
view
);
}
break
;
case
"table-normal"
:
checkPermissions
(
xAxis
,
fields
,
desensitizationList
,
true
);
checkPermissions
(
yAxis
,
fields
,
desensitizationList
,
true
);
break
;
default
:
checkPermissions
(
xAxis
,
fields
,
desensitizationList
,
false
);
checkPermissions
(
yAxis
,
fields
,
desensitizationList
,
false
);
}
// 过滤来自仪表板的条件
...
...
@@ -344,7 +382,7 @@ public class ChartViewService {
if
(
ObjectUtils
.
isEmpty
(
ds
))
{
throw
new
RuntimeException
(
Translator
.
get
(
"i18n_datasource_delete"
));
}
if
(
StringUtils
.
isNotEmpty
(
ds
.
getStatus
())
&&
ds
.
getStatus
().
equalsIgnoreCase
(
"Error"
))
{
if
(
StringUtils
.
isNotEmpty
(
ds
.
getStatus
())
&&
ds
.
getStatus
().
equalsIgnoreCase
(
"Error"
))
{
throw
new
Exception
(
Translator
.
get
(
"i18n_invalid_ds"
));
}
DatasourceProvider
datasourceProvider
=
ProviderFactory
.
getProvider
(
ds
.
getType
());
...
...
@@ -569,7 +607,7 @@ public class ChartViewService {
}
// table组件,明细表,也用于导出数据
Map
<
String
,
Object
>
mapTableNormal
=
transTableNormal
(
xAxis
,
yAxis
,
view
,
data
,
extStack
);
Map
<
String
,
Object
>
mapTableNormal
=
transTableNormal
(
xAxis
,
yAxis
,
view
,
data
,
extStack
,
desensitizationList
);
map
.
putAll
(
mapChart
);
map
.
putAll
(
mapTableNormal
);
...
...
@@ -587,6 +625,12 @@ public class ChartViewService {
return
dto
;
}
private
ChartViewDTO
emptyChartViewDTO
(
ChartViewDTO
view
)
{
ChartViewDTO
dto
=
new
ChartViewDTO
();
BeanUtils
.
copyBean
(
dto
,
view
);
return
dto
;
}
private
boolean
checkCalcType
(
String
dateStyle
,
String
calcType
)
{
switch
(
dateStyle
)
{
case
"y"
:
...
...
@@ -1510,7 +1554,7 @@ public class ChartViewService {
}
// 表格
private
Map
<
String
,
Object
>
transTableNormal
(
List
<
ChartViewFieldDTO
>
xAxis
,
List
<
ChartViewFieldDTO
>
yAxis
,
ChartViewWithBLOBs
view
,
List
<
String
[]>
data
,
List
<
ChartViewFieldDTO
>
extStack
)
{
private
Map
<
String
,
Object
>
transTableNormal
(
List
<
ChartViewFieldDTO
>
xAxis
,
List
<
ChartViewFieldDTO
>
yAxis
,
ChartViewWithBLOBs
view
,
List
<
String
[]>
data
,
List
<
ChartViewFieldDTO
>
extStack
,
List
<
String
>
desensitizationList
)
{
Map
<
String
,
Object
>
map
=
new
TreeMap
<>();
List
<
ChartViewFieldDTO
>
fields
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
tableRow
=
new
ArrayList
<>();
...
...
@@ -1526,9 +1570,14 @@ 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
())){
d
.
put
(
fields
.
get
(
i
).
getDataeaseName
(),
ColumnPermissionConstants
.
Desensitization_desc
);
continue
;
}
ChartViewFieldDTO
chartViewFieldDTO
=
fields
.
get
(
i
);
if
(
chartViewFieldDTO
.
getDeType
()
==
0
||
chartViewFieldDTO
.
getDeType
()
==
1
)
{
d
.
put
(
fields
.
get
(
i
).
getDataeaseName
(),
StringUtils
.
isEmpty
(
ele
[
i
])
?
""
:
ele
[
i
]);
d
.
put
(
fields
.
get
(
i
).
getDataeaseName
(),
StringUtils
.
isEmpty
(
ele
[
i
])
?
""
:
ele
[
i
]);
}
else
if
(
chartViewFieldDTO
.
getDeType
()
==
2
||
chartViewFieldDTO
.
getDeType
()
==
3
)
{
d
.
put
(
fields
.
get
(
i
).
getDataeaseName
(),
StringUtils
.
isEmpty
(
ele
[
i
])
?
null
:
new
BigDecimal
(
ele
[
i
]).
setScale
(
2
,
RoundingMode
.
HALF_UP
));
}
...
...
backend/src/main/java/io/dataease/service/dataset/DataSetTableFieldsService.java
浏览文件 @
7d90a503
...
...
@@ -91,6 +91,10 @@ public class DataSetTableFieldsService {
return
datasetTableFieldMapper
.
selectByExample
(
datasetTableFieldExample
);
}
public
DatasetTableField
selectByPrimaryKey
(
String
id
)
{
return
datasetTableFieldMapper
.
selectByPrimaryKey
(
id
);
}
public
List
<
DatasetTableField
>
getListByIdsEach
(
List
<
String
>
ids
)
{
List
<
DatasetTableField
>
list
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
ids
))
{
...
...
backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
浏览文件 @
7d90a503
package
io
.
dataease
.
service
.
dataset
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.gson.Gson
;
import
io.dataease.auth.api.dto.CurrentRoleDto
;
import
io.dataease.auth.api.dto.CurrentUserDto
;
import
io.dataease.auth.entity.SysUserEntity
;
import
io.dataease.auth.service.AuthUserService
;
import
io.dataease.base.domain.*
;
import
io.dataease.base.mapper.*
;
import
io.dataease.base.mapper.ext.ExtDataSetGroupMapper
;
import
io.dataease.base.mapper.ext.ExtDataSetTableMapper
;
import
io.dataease.base.mapper.ext.UtilMapper
;
import
io.dataease.commons.constants.DatasourceTypes
;
import
io.dataease.commons.constants.JobStatus
;
import
io.dataease.commons.constants.ScheduleType
;
import
io.dataease.commons.constants.TaskStatus
;
import
io.dataease.commons.constants.*
;
import
io.dataease.commons.exception.DEException
;
import
io.dataease.commons.utils.*
;
import
io.dataease.controller.request.dataset.DataSetGroupRequest
;
...
...
@@ -23,7 +14,6 @@ import io.dataease.controller.request.dataset.DataSetTableRequest;
import
io.dataease.controller.request.dataset.DataSetTaskRequest
;
import
io.dataease.controller.request.datasource.DatasourceRequest
;
import
io.dataease.controller.response.DataSetDetail
;
import
io.dataease.dto.chart.ChartCustomFilterItemDTO
;
import
io.dataease.dto.chart.ChartFieldCustomFilterDTO
;
import
io.dataease.dto.dataset.*
;
import
io.dataease.dto.dataset.union.UnionDTO
;
...
...
@@ -32,12 +22,7 @@ import io.dataease.dto.dataset.union.UnionParamDTO;
import
io.dataease.dto.datasource.TableFiled
;
import
io.dataease.exception.DataEaseException
;
import
io.dataease.i18n.Translator
;
import
io.dataease.plugins.config.SpringContextUtil
;
import
io.dataease.plugins.loader.ClassloaderResponsity
;
import
io.dataease.plugins.xpack.auth.dto.request.DataSetRowPermissionsDTO
;
import
io.dataease.plugins.xpack.auth.dto.request.DatasetRowPermissions
;
import
io.dataease.plugins.xpack.auth.dto.response.XpackSysAuthDetailDTO
;
import
io.dataease.plugins.xpack.auth.service.RowPermissionService
;
import
io.dataease.provider.ProviderFactory
;
import
io.dataease.provider.datasource.DatasourceProvider
;
import
io.dataease.provider.datasource.JdbcProvider
;
...
...
@@ -72,7 +57,7 @@ import java.text.SimpleDateFormat;
import
java.util.*
;
import
java.util.stream.Collectors
;
;
;
import
static
io
.
dataease
.
commons
.
constants
.
ColumnPermissionConstants
.
Desensitization_desc
;
/**
* @Author gin
...
...
@@ -108,7 +93,7 @@ public class DataSetTableService {
@Resource
private
DatasetTableFieldMapper
datasetTableFieldMapper
;
@Resource
private
AuthUserService
authUser
Service
;
private
PermissionService
permission
Service
;
private
static
final
String
lastUpdateTime
=
"${__last_update_time__}"
;
private
static
final
String
currentUpdateTime
=
"${__current_update_time__}"
;
...
...
@@ -448,103 +433,6 @@ public class DataSetTableService {
return
map
;
}
private
List
<
DatasetRowPermissions
>
rowPermissions
(
String
datasetId
,
Long
userId
)
{
List
<
DatasetRowPermissions
>
datasetRowPermissions
=
new
ArrayList
<>();
Map
<
String
,
RowPermissionService
>
beansOfType
=
SpringContextUtil
.
getApplicationContext
().
getBeansOfType
((
RowPermissionService
.
class
));
if
(
beansOfType
.
keySet
().
size
()
==
0
)
{
return
new
ArrayList
<>();
}
RowPermissionService
rowPermissionService
=
SpringContextUtil
.
getBean
(
RowPermissionService
.
class
);
CurrentUserDto
user
=
AuthUtils
.
getUser
();
List
<
Long
>
roleIds
=
new
ArrayList
<>();
Long
deptId
=
null
;
if
(
user
==
null
&&
userId
==
null
)
{
return
datasetRowPermissions
;
}
if
(
user
!=
null
&&
userId
!=
null
)
{
return
datasetRowPermissions
;
}
if
(
user
!=
null
)
{
if
(
user
.
getIsAdmin
())
{
return
datasetRowPermissions
;
}
userId
=
user
.
getUserId
();
deptId
=
user
.
getDeptId
();
roleIds
=
user
.
getRoles
().
stream
().
map
(
CurrentRoleDto:
:
getId
).
collect
(
Collectors
.
toList
());
}
if
(
userId
!=
null
)
{
SysUserEntity
userEntity
=
authUserService
.
getUserById
(
userId
);
if
(
userEntity
.
getIsAdmin
())
{
return
datasetRowPermissions
;
}
deptId
=
userEntity
.
getDeptId
();
roleIds
=
authUserService
.
roles
(
userId
).
stream
().
map
(
r
->
Long
.
valueOf
(
r
)).
collect
(
Collectors
.
toList
());
}
DataSetRowPermissionsDTO
dataSetRowPermissionsDTO
=
new
DataSetRowPermissionsDTO
();
dataSetRowPermissionsDTO
.
setDatasetId
(
datasetId
);
dataSetRowPermissionsDTO
.
setAuthTargetIds
(
Collections
.
singletonList
(
userId
));
dataSetRowPermissionsDTO
.
setAuthTargetType
(
"user"
);
datasetRowPermissions
.
addAll
(
rowPermissionService
.
searchRowPermissions
(
dataSetRowPermissionsDTO
));
dataSetRowPermissionsDTO
.
setAuthTargetIds
(
roleIds
);
dataSetRowPermissionsDTO
.
setAuthTargetType
(
"role"
);
datasetRowPermissions
.
addAll
(
rowPermissionService
.
searchRowPermissions
(
dataSetRowPermissionsDTO
));
dataSetRowPermissionsDTO
.
setAuthTargetIds
(
Collections
.
singletonList
(
deptId
));
dataSetRowPermissionsDTO
.
setAuthTargetType
(
"dept"
);
datasetRowPermissions
.
addAll
(
rowPermissionService
.
searchRowPermissions
(
dataSetRowPermissionsDTO
));
return
datasetRowPermissions
;
}
private
DatasetTableField
getFieldById
(
List
<
DatasetTableField
>
fields
,
String
fieldId
)
{
DatasetTableField
field
=
null
;
for
(
DatasetTableField
datasetTableField
:
fields
)
{
if
(
fieldId
.
equalsIgnoreCase
(
datasetTableField
.
getId
()))
{
field
=
datasetTableField
;
}
}
return
field
;
}
public
List
<
ChartFieldCustomFilterDTO
>
getCustomFilters
(
List
<
DatasetTableField
>
fields
,
DatasetTable
datasetTable
,
Long
user
)
{
List
<
ChartFieldCustomFilterDTO
>
customFilter
=
new
ArrayList
<>();
for
(
DatasetRowPermissions
datasetRowPermissions
:
rowPermissions
(
datasetTable
.
getId
(),
user
))
{
ChartFieldCustomFilterDTO
dto
=
new
ChartFieldCustomFilterDTO
();
if
(
StringUtils
.
isEmpty
(
datasetRowPermissions
.
getDatasetFieldId
()))
{
continue
;
}
DatasetTableField
field
=
getFieldById
(
fields
,
datasetRowPermissions
.
getDatasetFieldId
());
if
(
field
==
null
)
{
continue
;
}
dto
.
setField
(
field
);
dto
.
setId
(
field
.
getId
());
dto
.
setFilterType
(
datasetRowPermissions
.
getFilterType
());
if
(
datasetRowPermissions
.
getFilterType
().
equalsIgnoreCase
(
"logic"
))
{
if
(
StringUtils
.
isEmpty
(
datasetRowPermissions
.
getFilter
()))
{
continue
;
}
List
<
ChartCustomFilterItemDTO
>
lists
=
JSONObject
.
parseArray
(
datasetRowPermissions
.
getFilter
(),
ChartCustomFilterItemDTO
.
class
);
lists
.
forEach
(
chartCustomFilterDTO
->
{
chartCustomFilterDTO
.
setFieldId
(
field
.
getId
());
});
dto
.
setFilter
(
lists
);
dto
.
setLogic
(
datasetRowPermissions
.
getLogic
());
customFilter
.
add
(
dto
);
}
else
{
if
(
StringUtils
.
isEmpty
(
datasetRowPermissions
.
getEnumCheckField
()))
{
continue
;
}
dto
.
setEnumCheckField
(
Arrays
.
asList
(
datasetRowPermissions
.
getEnumCheckField
().
split
(
","
).
clone
()));
customFilter
.
add
(
dto
);
}
}
return
customFilter
;
}
public
Map
<
String
,
Object
>
getPreviewData
(
DataSetTableRequest
dataSetTableRequest
,
Integer
page
,
Integer
pageSize
,
List
<
DatasetTableField
>
extFields
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
...
...
@@ -560,7 +448,11 @@ public class DataSetTableService {
return
map
;
}
DatasetTable
datasetTable
=
datasetTableMapper
.
selectByPrimaryKey
(
dataSetTableRequest
.
getId
());
List
<
ChartFieldCustomFilterDTO
>
customFilter
=
getCustomFilters
(
fields
,
datasetTable
,
null
);
//列权限
List
<
String
>
desensitizationList
=
new
ArrayList
<>();
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
,
null
);
//行权限
List
<
ChartFieldCustomFilterDTO
>
customFilter
=
permissionService
.
getCustomFilters
(
fields
,
datasetTable
,
null
);
String
[]
fieldArray
=
fields
.
stream
().
map
(
DatasetTableField:
:
getDataeaseName
).
toArray
(
String
[]::
new
);
DataTableInfoDTO
dataTableInfoDTO
=
new
Gson
().
fromJson
(
dataSetTableRequest
.
getInfo
(),
DataTableInfoDTO
.
class
);
...
...
@@ -873,7 +765,11 @@ public class DataSetTableService {
jsonArray
=
data
.
stream
().
map
(
ele
->
{
Map
<
String
,
Object
>
tmpMap
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
ele
.
length
;
i
++)
{
tmpMap
.
put
(
fieldArray
[
i
],
ele
[
i
]);
if
(
desensitizationList
.
contains
(
fieldArray
[
i
]))
{
tmpMap
.
put
(
fieldArray
[
i
],
Desensitization_desc
);
}
else
{
tmpMap
.
put
(
fieldArray
[
i
],
ele
[
i
]);
}
}
return
tmpMap
;
}).
collect
(
Collectors
.
toList
());
...
...
backend/src/main/java/io/dataease/service/dataset/PermissionService.java
0 → 100644
浏览文件 @
7d90a503
package
io
.
dataease
.
service
.
dataset
;
import
com.alibaba.fastjson.JSONObject
;
import
io.dataease.auth.api.dto.CurrentRoleDto
;
import
io.dataease.auth.api.dto.CurrentUserDto
;
import
io.dataease.auth.entity.SysUserEntity
;
import
io.dataease.auth.service.AuthUserService
;
import
io.dataease.base.domain.DatasetTable
;
import
io.dataease.base.domain.DatasetTableField
;
import
io.dataease.commons.constants.ColumnPermissionConstants
;
import
io.dataease.commons.utils.AuthUtils
;
import
io.dataease.dto.chart.ChartCustomFilterItemDTO
;
import
io.dataease.dto.chart.ChartFieldCustomFilterDTO
;
import
io.dataease.plugins.config.SpringContextUtil
;
import
io.dataease.plugins.xpack.auth.dto.request.*
;
import
io.dataease.plugins.xpack.auth.service.ColumnPermissionService
;
import
io.dataease.plugins.xpack.auth.service.RowPermissionService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Service
public
class
PermissionService
{
@Resource
private
AuthUserService
authUserService
;
public
List
<
ChartFieldCustomFilterDTO
>
getCustomFilters
(
List
<
DatasetTableField
>
fields
,
DatasetTable
datasetTable
,
Long
user
)
{
List
<
ChartFieldCustomFilterDTO
>
customFilter
=
new
ArrayList
<>();
for
(
DatasetRowPermissions
datasetRowPermissions
:
rowPermissions
(
datasetTable
.
getId
(),
user
))
{
ChartFieldCustomFilterDTO
dto
=
new
ChartFieldCustomFilterDTO
();
if
(
StringUtils
.
isEmpty
(
datasetRowPermissions
.
getDatasetFieldId
()))
{
continue
;
}
DatasetTableField
field
=
getFieldById
(
fields
,
datasetRowPermissions
.
getDatasetFieldId
());
if
(
field
==
null
)
{
continue
;
}
dto
.
setField
(
field
);
dto
.
setId
(
field
.
getId
());
dto
.
setFilterType
(
datasetRowPermissions
.
getFilterType
());
if
(
datasetRowPermissions
.
getFilterType
().
equalsIgnoreCase
(
"logic"
))
{
if
(
StringUtils
.
isEmpty
(
datasetRowPermissions
.
getFilter
()))
{
continue
;
}
List
<
ChartCustomFilterItemDTO
>
lists
=
JSONObject
.
parseArray
(
datasetRowPermissions
.
getFilter
(),
ChartCustomFilterItemDTO
.
class
);
lists
.
forEach
(
chartCustomFilterDTO
->
{
chartCustomFilterDTO
.
setFieldId
(
field
.
getId
());
});
dto
.
setFilter
(
lists
);
dto
.
setLogic
(
datasetRowPermissions
.
getLogic
());
customFilter
.
add
(
dto
);
}
else
{
if
(
StringUtils
.
isEmpty
(
datasetRowPermissions
.
getEnumCheckField
()))
{
continue
;
}
dto
.
setEnumCheckField
(
Arrays
.
asList
(
datasetRowPermissions
.
getEnumCheckField
().
split
(
","
).
clone
()));
customFilter
.
add
(
dto
);
}
}
return
customFilter
;
}
public
List
<
DatasetTableField
>
filterColumnPermissons
(
List
<
DatasetTableField
>
fields
,
List
<
String
>
desensitizationList
,
DatasetTable
datasetTable
,
Long
user
){
List
<
DatasetTableField
>
result
=
new
ArrayList
<>();
List
<
ColumnPermissionItem
>
allColumnPermissionItems
=
new
ArrayList
<>();
for
(
DataSetColumnPermissionsDTO
dataSetColumnPermissionsDTO
:
columnPermissions
(
datasetTable
.
getId
(),
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
()));
}
fields
.
forEach
(
field
->{
List
<
String
>
permissions
=
allColumnPermissionItems
.
stream
().
filter
(
columnPermissionItem
->
columnPermissionItem
.
getId
().
equalsIgnoreCase
(
field
.
getId
())).
map
(
ColumnPermissionItem:
:
getOpt
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
permissions
)){
result
.
add
(
field
);
}
else
{
if
(!
permissions
.
contains
(
ColumnPermissionConstants
.
Prohibit
)){
desensitizationList
.
add
(
field
.
getDataeaseName
());
result
.
add
(
field
);
}
}
});
return
result
;
}
private
List
<
DatasetRowPermissions
>
rowPermissions
(
String
datasetId
,
Long
userId
)
{
List
<
DatasetRowPermissions
>
datasetRowPermissions
=
new
ArrayList
<>();
Map
<
String
,
RowPermissionService
>
beansOfType
=
SpringContextUtil
.
getApplicationContext
().
getBeansOfType
((
RowPermissionService
.
class
));
if
(
beansOfType
.
keySet
().
size
()
==
0
)
{
return
new
ArrayList
<>();
}
RowPermissionService
rowPermissionService
=
SpringContextUtil
.
getBean
(
RowPermissionService
.
class
);
CurrentUserDto
user
=
AuthUtils
.
getUser
();
List
<
Long
>
roleIds
=
new
ArrayList
<>();
Long
deptId
=
null
;
if
(
user
==
null
&&
userId
==
null
)
{
return
datasetRowPermissions
;
}
if
(
user
!=
null
&&
userId
!=
null
)
{
return
datasetRowPermissions
;
}
if
(
user
!=
null
)
{
if
(
user
.
getIsAdmin
())
{
return
datasetRowPermissions
;
}
userId
=
user
.
getUserId
();
deptId
=
user
.
getDeptId
();
roleIds
=
user
.
getRoles
().
stream
().
map
(
CurrentRoleDto:
:
getId
).
collect
(
Collectors
.
toList
());
}
if
(
userId
!=
null
)
{
SysUserEntity
userEntity
=
authUserService
.
getUserById
(
userId
);
if
(
userEntity
.
getIsAdmin
())
{
return
datasetRowPermissions
;
}
deptId
=
userEntity
.
getDeptId
();
roleIds
=
authUserService
.
roles
(
userId
).
stream
().
map
(
r
->
Long
.
valueOf
(
r
)).
collect
(
Collectors
.
toList
());
}
DataSetRowPermissionsDTO
dataSetRowPermissionsDTO
=
new
DataSetRowPermissionsDTO
();
dataSetRowPermissionsDTO
.
setDatasetId
(
datasetId
);
dataSetRowPermissionsDTO
.
setAuthTargetIds
(
Collections
.
singletonList
(
userId
));
dataSetRowPermissionsDTO
.
setAuthTargetType
(
"user"
);
datasetRowPermissions
.
addAll
(
rowPermissionService
.
searchRowPermissions
(
dataSetRowPermissionsDTO
));
dataSetRowPermissionsDTO
.
setAuthTargetIds
(
roleIds
);
dataSetRowPermissionsDTO
.
setAuthTargetType
(
"role"
);
datasetRowPermissions
.
addAll
(
rowPermissionService
.
searchRowPermissions
(
dataSetRowPermissionsDTO
));
dataSetRowPermissionsDTO
.
setAuthTargetIds
(
Collections
.
singletonList
(
deptId
));
dataSetRowPermissionsDTO
.
setAuthTargetType
(
"dept"
);
datasetRowPermissions
.
addAll
(
rowPermissionService
.
searchRowPermissions
(
dataSetRowPermissionsDTO
));
return
datasetRowPermissions
;
}
private
List
<
DataSetColumnPermissionsDTO
>
columnPermissions
(
String
datasetId
,
Long
userId
)
{
List
<
DataSetColumnPermissionsDTO
>
datasetColumnPermissions
=
new
ArrayList
<>();
Map
<
String
,
ColumnPermissionService
>
beansOfType
=
SpringContextUtil
.
getApplicationContext
().
getBeansOfType
((
ColumnPermissionService
.
class
));
if
(
beansOfType
.
keySet
().
size
()
==
0
)
{
return
new
ArrayList
<>();
}
ColumnPermissionService
columnPermissionService
=
SpringContextUtil
.
getBean
(
ColumnPermissionService
.
class
);
CurrentUserDto
user
=
AuthUtils
.
getUser
();
List
<
Long
>
roleIds
=
new
ArrayList
<>();
Long
deptId
=
null
;
if
(
user
==
null
&&
userId
==
null
)
{
return
datasetColumnPermissions
;
}
if
(
user
!=
null
&&
userId
!=
null
)
{
return
datasetColumnPermissions
;
}
if
(
user
!=
null
)
{
if
(
user
.
getIsAdmin
())
{
return
datasetColumnPermissions
;
}
userId
=
user
.
getUserId
();
deptId
=
user
.
getDeptId
();
roleIds
=
user
.
getRoles
().
stream
().
map
(
CurrentRoleDto:
:
getId
).
collect
(
Collectors
.
toList
());
}
if
(
userId
!=
null
)
{
SysUserEntity
userEntity
=
authUserService
.
getUserById
(
userId
);
if
(
userEntity
.
getIsAdmin
())
{
return
datasetColumnPermissions
;
}
deptId
=
userEntity
.
getDeptId
();
roleIds
=
authUserService
.
roles
(
userId
).
stream
().
map
(
r
->
Long
.
valueOf
(
r
)).
collect
(
Collectors
.
toList
());
}
DataSetColumnPermissionsDTO
dataSetColumnPermissionsDTO
=
new
DataSetColumnPermissionsDTO
();
dataSetColumnPermissionsDTO
.
setDatasetId
(
datasetId
);
dataSetColumnPermissionsDTO
.
setAuthTargetIds
(
Collections
.
singletonList
(
userId
));
dataSetColumnPermissionsDTO
.
setAuthTargetType
(
"user"
);
datasetColumnPermissions
.
addAll
(
columnPermissionService
.
searchPermissions
(
dataSetColumnPermissionsDTO
));
dataSetColumnPermissionsDTO
.
setAuthTargetIds
(
roleIds
);
dataSetColumnPermissionsDTO
.
setAuthTargetType
(
"role"
);
datasetColumnPermissions
.
addAll
(
columnPermissionService
.
searchPermissions
(
dataSetColumnPermissionsDTO
));
dataSetColumnPermissionsDTO
.
setAuthTargetIds
(
Collections
.
singletonList
(
deptId
));
dataSetColumnPermissionsDTO
.
setAuthTargetType
(
"dept"
);
datasetColumnPermissions
.
addAll
(
columnPermissionService
.
searchPermissions
(
dataSetColumnPermissionsDTO
));
return
datasetColumnPermissions
;
}
private
DatasetTableField
getFieldById
(
List
<
DatasetTableField
>
fields
,
String
fieldId
)
{
DatasetTableField
field
=
null
;
for
(
DatasetTableField
datasetTableField
:
fields
)
{
if
(
fieldId
.
equalsIgnoreCase
(
datasetTableField
.
getId
()))
{
field
=
datasetTableField
;
}
}
return
field
;
}
}
backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java
浏览文件 @
7d90a503
...
...
@@ -4,20 +4,18 @@ import com.google.gson.Gson;
import
io.dataease.base.domain.DatasetTable
;
import
io.dataease.base.domain.DatasetTableField
;
import
io.dataease.base.domain.Datasource
;
import
io.dataease.commons.constants.ColumnPermissionConstants
;
import
io.dataease.commons.utils.CommonBeanFactory
;
import
io.dataease.dto.chart.ChartFieldCustomFilterDTO
;
import
io.dataease.i18n.Translator
;
import
io.dataease.provider.datasource.DatasourceProvider
;
import
io.dataease.provider.ProviderFactory
;
import
io.dataease.controller.request.datasource.DatasourceRequest
;
import
io.dataease.service.dataset.*
;
import
io.dataease.service.datasource.DatasourceService
;
import
io.dataease.dto.dataset.DataSetTableUnionDTO
;
import
io.dataease.dto.dataset.DataTableInfoDTO
;
import
io.dataease.provider.query.QueryProvider
;
import
io.dataease.service.dataset.DataSetFieldService
;
import
io.dataease.service.dataset.DataSetTableFieldsService
;
import
io.dataease.service.dataset.DataSetTableService
;
import
io.dataease.service.dataset.DataSetTableUnionService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -40,32 +38,38 @@ public class DirectFieldService implements DataSetFieldService {
private
DatasourceService
datasourceService
;
@Resource
private
DataSetTableUnionService
dataSetTableUnionService
;
@Resource
private
PermissionService
permissionService
;
@Override
public
List
<
Object
>
fieldValues
(
String
fieldId
,
Long
userId
)
throws
Exception
{
List
<
DatasetTableField
>
list
=
dataSetTableFieldsService
.
getListByIds
(
new
ArrayList
<
String
>()
{{
add
(
fieldId
);
}});
if
(
CollectionUtils
.
isEmpty
(
list
))
return
null
;
DatasetTableField
field
=
list
.
get
(
0
);
String
tableId
=
field
.
getTableId
();
if
(
StringUtils
.
isEmpty
(
tableId
))
return
null
;
public
List
<
Object
>
fieldValues
(
String
fieldId
,
Long
userId
)
throws
Exception
{
DatasetTableField
field
=
dataSetTableFieldsService
.
selectByPrimaryKey
(
fieldId
);
if
(
field
==
null
||
StringUtils
.
isEmpty
(
field
.
getTableId
()))
return
null
;
DatasetTable
datasetTable
=
dataSetTableService
.
get
(
tableId
);
DatasetTable
datasetTable
=
dataSetTableService
.
get
(
field
.
getTableId
()
);
if
(
ObjectUtils
.
isEmpty
(
datasetTable
)
||
StringUtils
.
isEmpty
(
datasetTable
.
getName
()))
return
null
;
String
tableName
;
DatasetTableField
datasetTableField
=
DatasetTableField
.
builder
().
tableId
(
tableId
).
checked
(
Boolean
.
TRUE
).
build
();
DatasetTableField
datasetTableField
=
DatasetTableField
.
builder
().
tableId
(
field
.
getTableId
()
).
checked
(
Boolean
.
TRUE
).
build
();
List
<
DatasetTableField
>
fields
=
dataSetTableFieldsService
.
list
(
datasetTableField
);
List
<
ChartFieldCustomFilterDTO
>
customFilter
=
dataSetTableService
.
getCustomFilters
(
fields
,
datasetTable
,
userId
);
//列权限
List
<
String
>
desensitizationList
=
new
ArrayList
<>();
fields
=
permissionService
.
filterColumnPermissons
(
fields
,
desensitizationList
,
datasetTable
,
userId
);
if
(
CollectionUtils
.
isNotEmpty
(
desensitizationList
)
&&
desensitizationList
.
contains
(
field
.
getDataeaseName
()))
{
List
<
Object
>
results
=
new
ArrayList
<>();
results
.
add
(
ColumnPermissionConstants
.
Desensitization_desc
);
return
results
;
}
//行权限
List
<
ChartFieldCustomFilterDTO
>
customFilter
=
permissionService
.
getCustomFilters
(
fields
,
datasetTable
,
userId
);
DatasourceRequest
datasourceRequest
=
new
DatasourceRequest
();
DatasourceProvider
datasourceProvider
=
null
;
if
(
datasetTable
.
getMode
()
==
0
)
{
// 直连
if
(
StringUtils
.
isEmpty
(
datasetTable
.
getDataSourceId
()))
return
null
;
Datasource
ds
=
datasourceService
.
get
(
datasetTable
.
getDataSourceId
());
if
(
StringUtils
.
isNotEmpty
(
ds
.
getStatus
())
&&
ds
.
getStatus
().
equalsIgnoreCase
(
"Error"
))
{
if
(
StringUtils
.
isNotEmpty
(
ds
.
getStatus
())
&&
ds
.
getStatus
().
equalsIgnoreCase
(
"Error"
))
{
throw
new
Exception
(
Translator
.
get
(
"i18n_invalid_ds"
));
}
datasourceProvider
=
ProviderFactory
.
getProvider
(
ds
.
getType
());
...
...
@@ -94,7 +98,7 @@ public class DirectFieldService implements DataSetFieldService {
datasourceProvider
=
ProviderFactory
.
getProvider
(
ds
.
getType
());
datasourceRequest
=
new
DatasourceRequest
();
datasourceRequest
.
setDatasource
(
ds
);
tableName
=
"ds_"
+
datasetTable
.
getId
().
replaceAll
(
"-"
,
"_"
);
String
tableName
=
"ds_"
+
datasetTable
.
getId
().
replaceAll
(
"-"
,
"_"
);
datasourceRequest
.
setTable
(
tableName
);
QueryProvider
qp
=
ProviderFactory
.
getQueryProvider
(
ds
.
getType
());
datasourceRequest
.
setQuery
(
qp
.
createQuerySQL
(
tableName
,
Collections
.
singletonList
(
field
),
true
,
null
,
customFilter
));
...
...
backend/src/main/resources/db/migration/V31__1.7.sql
0 → 100644
浏览文件 @
7d90a503
CREATE
TABLE
`dataset_column_permissions`
(
`id`
varchar
(
64
)
NOT
NULL
COMMENT
'File ID'
,
`auth_target_type`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'权限类型:组织/角色/用户'
,
`auth_target_id`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'权限对象ID'
,
`dataset_id`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'数据集ID'
,
`permissions`
longtext
DEFAULT
NULL
COMMENT
'权限'
,
`update_time`
bigint
(
13
)
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
utf8mb4_general_ci
;
\ No newline at end of file
backend/src/main/resources/generatorConfig.xml
浏览文件 @
7d90a503
...
...
@@ -60,6 +60,6 @@
</javaClientGenerator>
<!--要生成的数据库表 -->
<table
tableName=
"dataset_
row
_permissions"
/>
<table
tableName=
"dataset_
column
_permissions"
/>
</context>
</generatorConfiguration>
frontend/src/lang/en.js
浏览文件 @
7d90a503
...
...
@@ -1200,7 +1200,21 @@ export default {
auth_type
:
'Authorization type'
,
auth_obj
:
'Authorized object'
},
column_permission
:
{
add
:
'Add'
,
edit
:
'Edit'
,
please_select_auth_type
:
'Please select the authorization type'
,
please_select_auth_id
:
'请选择授权目标'
,
column_permission_not_empty
:
'Please select authorization target'
,
auth_type
:
'Authorization type'
,
auth_obj
:
'Authorized object'
,
enable
:
'Enable column permissions'
,
prohibit
:
'Prohibit'
,
desensitization
:
'Desensitization'
},
row_permissions
:
'Row Permissions'
,
column_permissions
:
'列权限'
,
row_column_permissions
:
'行列权限'
,
union_data
:
'Union Dataset'
,
add_union_table
:
'Add Union Dataset'
,
edit_union
:
'Edit Union Dataset'
,
...
...
frontend/src/lang/tw.js
浏览文件 @
7d90a503
...
...
@@ -1200,7 +1200,21 @@ export default {
auth_type
:
'授權類型'
,
auth_obj
:
'授權對象'
},
column_permission
:
{
add
:
'添加列權限'
,
edit
:
'編輯列權限'
,
please_select_auth_type
:
'請選餓授權類型'
,
please_select_auth_id
:
'請選擇授權目標'
,
column_permission_not_empty
:
'列權限不能為空'
,
auth_type
:
'授權類型'
,
auth_obj
:
'授權對象'
,
enable
:
'啟用列權限'
,
prohibit
:
'禁用'
,
desensitization
:
'脫敏'
},
row_permissions
:
'行權限'
,
column_permissions
:
'列權限'
,
row_column_permissions
:
'行列權限'
,
union_data
:
'關聯數據集'
,
add_union_table
:
'添加關聯數據集'
,
edit_union
:
'編輯關聯數據集'
,
...
...
frontend/src/lang/zh.js
浏览文件 @
7d90a503
...
...
@@ -1203,7 +1203,22 @@ export default {
auth_type
:
'授权类型'
,
auth_obj
:
'授权对象'
},
column_permission
:
{
add
:
'添加列权限'
,
edit
:
'编辑列权限'
,
please_select_field
:
'请选择字段'
,
please_select_auth_type
:
'请选择授权类型'
,
please_select_auth_id
:
'请选择授权目标'
,
column_permission_not_empty
:
'列权限不能为空'
,
auth_type
:
'授权类型'
,
auth_obj
:
'授权对象'
,
enable
:
'启用列权限'
,
prohibit
:
'禁用'
,
desensitization
:
'脱敏'
},
row_permissions
:
'行权限'
,
column_permissions
:
'列权限'
,
row_column_permissions
:
'行列权限'
,
union_data
:
'关联数据集'
,
add_union_table
:
'添加关联数据集'
,
edit_union
:
'编辑关联数据集'
,
...
...
frontend/src/views/dataset/data/ViewTable.vue
浏览文件 @
7d90a503
...
...
@@ -59,6 +59,9 @@
<el-tab-pane
v-if=
"isPluginLoaded && hasDataPermission('manage',param.privileges)"
:lazy=
"true"
:label=
"$t('dataset.row_permissions')"
name=
"rowPermissions"
>
<plugin-com
v-if=
"isPluginLoaded && tabActive=='rowPermissions'"
ref=
"RowPermissions"
component-name=
"RowPermissions"
:obj=
"table"
/>
</el-tab-pane>
<el-tab-pane
v-if=
"isPluginLoaded && hasDataPermission('manage',param.privileges)"
:lazy=
"true"
:label=
"$t('dataset.column_permissions')"
name=
"columnPermissions"
>
<plugin-com
v-if=
"isPluginLoaded && tabActive=='columnPermissions'"
ref=
"ColumnPermissions"
component-name=
"ColumnPermissions"
:obj=
"table"
/>
</el-tab-pane>
</el-tabs>
</el-row>
</
template
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论