forked from github/dataease
feat: 支持系統變量
This commit is contained in:
parent
08d1659b73
commit
e67e6d0441
@ -21,6 +21,9 @@ public class SysUserEntity implements Serializable {
|
||||
@ApiModelProperty("组织ID")
|
||||
private Long deptId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
private String deptName;
|
||||
|
||||
@ApiModelProperty(hidden = true)
|
||||
private String password;
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
<result column="enabled" property="enabled"/>
|
||||
<result column="is_admin" jdbcType="BIT" property="isAdmin"/>
|
||||
<result column="from" property="from"/>
|
||||
<result column="dept_name" property="deptName"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="roleMap" type="io.dataease.auth.api.dto.CurrentRoleDto">
|
||||
@ -22,7 +23,22 @@
|
||||
|
||||
|
||||
<select id="findUser" resultMap="baseMap">
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone, language,is_admin, `from` from sys_user where user_id = #{userId}
|
||||
select
|
||||
sys_user.user_id,
|
||||
sys_user.username,
|
||||
sys_user.nick_name,
|
||||
sys_user.dept_id,
|
||||
sys_user.password,
|
||||
sys_user.enabled,
|
||||
sys_user.email,
|
||||
sys_user.phone,
|
||||
sys_user.language,
|
||||
sys_user.is_admin,
|
||||
sys_user.`from`,
|
||||
sys_dept.name as dept_name
|
||||
from sys_user
|
||||
left join sys_dept on sys_user.dept_id=sys_dept.dept_id
|
||||
where user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<select id="findUserByName" resultMap="baseMap">
|
||||
|
@ -30,7 +30,8 @@ public class PermissionService {
|
||||
|
||||
public List<ChartFieldCustomFilterDTO> getCustomFilters(List<DatasetTableField> fields, DatasetTable datasetTable, Long user) {
|
||||
List<ChartFieldCustomFilterDTO> customFilter = new ArrayList<>();
|
||||
for (DatasetRowPermissions datasetRowPermissions : rowPermissions(datasetTable.getId(), user)) {
|
||||
Map<String, Object> values = new HashMap<>();
|
||||
for (DatasetRowPermissions datasetRowPermissions : rowPermissions(datasetTable.getId(), user, values)) {
|
||||
ChartFieldCustomFilterDTO dto = new ChartFieldCustomFilterDTO();
|
||||
if (StringUtils.isEmpty(datasetRowPermissions.getDatasetFieldId())) {
|
||||
continue;
|
||||
@ -49,15 +50,23 @@ public class PermissionService {
|
||||
List<ChartCustomFilterItemDTO> lists = JSONObject.parseArray(datasetRowPermissions.getFilter(), ChartCustomFilterItemDTO.class);
|
||||
lists.forEach(chartCustomFilterDTO -> {
|
||||
chartCustomFilterDTO.setFieldId(field.getId());
|
||||
if(datasetRowPermissions.getAuthTargetType().equalsIgnoreCase("sysParams")){
|
||||
chartCustomFilterDTO.setValue(values.get(chartCustomFilterDTO.getValue()).toString());
|
||||
}
|
||||
});
|
||||
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()));
|
||||
if(datasetRowPermissions.getAuthTargetType().equalsIgnoreCase("sysParams")){
|
||||
dto.setEnumCheckField(Arrays.asList(values.get(datasetRowPermissions.getEnumCheckField()).toString().split(",").clone()));
|
||||
}else {
|
||||
dto.setEnumCheckField(Arrays.asList(datasetRowPermissions.getEnumCheckField().split(",").clone()));
|
||||
}
|
||||
customFilter.add(dto);
|
||||
}
|
||||
}
|
||||
@ -87,7 +96,7 @@ public class PermissionService {
|
||||
}
|
||||
|
||||
|
||||
private List<DatasetRowPermissions> rowPermissions(String datasetId, Long userId) {
|
||||
private List<DatasetRowPermissions> rowPermissions(String datasetId, Long userId, Map<String, Object> values) {
|
||||
List<DatasetRowPermissions> datasetRowPermissions = new ArrayList<>();
|
||||
Map<String, RowPermissionService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((RowPermissionService.class));
|
||||
if (beansOfType.keySet().size() == 0) {
|
||||
@ -106,7 +115,8 @@ public class PermissionService {
|
||||
}
|
||||
userId = userEntity.getUserId();
|
||||
deptId = userEntity.getDeptId();
|
||||
roleIds = authUserService.roles(userId).stream().map(r -> Long.valueOf(r)).collect(Collectors.toList());
|
||||
List<CurrentRoleDto> currentRoleDtos = authUserService.roleInfos(userId);
|
||||
roleIds = currentRoleDtos.stream().map(CurrentRoleDto::getId).collect(Collectors.toList());
|
||||
DataSetRowPermissionsDTO dataSetRowPermissionsDTO = new DataSetRowPermissionsDTO();
|
||||
dataSetRowPermissionsDTO.setDatasetId(datasetId);
|
||||
dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(userId));
|
||||
@ -118,6 +128,18 @@ public class PermissionService {
|
||||
dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId));
|
||||
dataSetRowPermissionsDTO.setAuthTargetType("dept");
|
||||
datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO));
|
||||
|
||||
dataSetRowPermissionsDTO.setAuthTargetType("sysParams");
|
||||
dataSetRowPermissionsDTO.setAuthTargetIds(null);
|
||||
datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO));
|
||||
|
||||
|
||||
values.put("${sysParams.userId}", userEntity.getUsername());
|
||||
values.put("${sysParams.userName}", userEntity.getNickName());
|
||||
values.put("${sysParams.userEmail}", userEntity.getEmail());
|
||||
values.put("${sysParams.userSource}", userEntity.getFrom() == 0 ? "LOCAL" : "OIDC");
|
||||
values.put("${sysParams.dept}", userEntity.getDeptName());
|
||||
values.put("${sysParams.roles}", StringUtils.joinWith(",", currentRoleDtos.stream().map(CurrentRoleDto::getName).collect(Collectors.toList())));
|
||||
return datasetRowPermissions;
|
||||
}
|
||||
|
||||
|
@ -1661,6 +1661,14 @@ export default {
|
||||
dept: 'Dept',
|
||||
role: 'Role',
|
||||
user: 'User',
|
||||
sysParams_type: {
|
||||
user_id: 'User ID',
|
||||
user_name: 'User Name',
|
||||
user_source: 'User From',
|
||||
user_email: 'Email',
|
||||
dept: 'Dept',
|
||||
role: 'Role'
|
||||
},
|
||||
linkAuth: 'Datasource',
|
||||
datasetAuth: 'Dataset',
|
||||
chartAuth: 'Chart',
|
||||
|
@ -1671,6 +1671,15 @@ export default {
|
||||
dept: '組織',
|
||||
role: '角色',
|
||||
user: '用戶',
|
||||
sysParams: '系統變量',
|
||||
sysParams_type: {
|
||||
user_id: '用戶ID',
|
||||
user_name: '用戶名',
|
||||
user_source: '用戶來源',
|
||||
user_email: '郵箱',
|
||||
dept: '組織',
|
||||
role: '角色'
|
||||
},
|
||||
linkAuth: '數據源',
|
||||
datasetAuth: '數據集',
|
||||
chartAuth: '視圖',
|
||||
|
@ -1679,6 +1679,15 @@ export default {
|
||||
dept: '组织',
|
||||
role: '角色',
|
||||
user: '用户',
|
||||
sysParams: '系统变量',
|
||||
sysParams_type: {
|
||||
user_id: '用户ID',
|
||||
user_name: '用户名',
|
||||
user_source: '用户来源',
|
||||
user_email: '邮箱',
|
||||
dept: '组织',
|
||||
role: '角色'
|
||||
},
|
||||
linkAuth: '数据源',
|
||||
datasetAuth: '数据集',
|
||||
chartAuth: '视图',
|
||||
|
Loading…
Reference in New Issue
Block a user