feat: 支持系統變量

This commit is contained in:
taojinlong 2022-03-29 15:59:19 +08:00
parent 08d1659b73
commit e67e6d0441
6 changed files with 72 additions and 5 deletions

View File

@ -21,6 +21,9 @@ public class SysUserEntity implements Serializable {
@ApiModelProperty("组织ID")
private Long deptId;
@ApiModelProperty("组织名称")
private String deptName;
@ApiModelProperty(hidden = true)
private String password;

View File

@ -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">

View File

@ -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;
}

View File

@ -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',

View File

@ -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: '視圖',

View File

@ -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: '视图',