提交 1e60188a authored 作者: taojinlong's avatar taojinlong

feat(数据源): 数据集行权限

上级 94cb9b45
...@@ -207,7 +207,7 @@ ...@@ -207,7 +207,7 @@
<dependency> <dependency>
<groupId>io.dataease</groupId> <groupId>io.dataease</groupId>
<artifactId>dataease-plugin-interface</artifactId> <artifactId>dataease-plugin-interface</artifactId>
<version>1.5</version> <version>1.6</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
...@@ -387,34 +387,34 @@ ...@@ -387,34 +387,34 @@
</dependencies> </dependencies>
</plugin> </plugin>
<plugin> <!-- <plugin>-->
<groupId>org.apache.maven.plugins</groupId> <!-- <groupId>org.apache.maven.plugins</groupId>-->
<artifactId>maven-antrun-plugin</artifactId> <!-- <artifactId>maven-antrun-plugin</artifactId>-->
<executions> <!-- <executions>-->
<execution> <!-- <execution>-->
<?m2e execute onConfiguration?> <!-- <?m2e execute onConfiguration?>-->
<id>main-class-placement</id> <!-- <id>main-class-placement</id>-->
<phase>generate-resources</phase> <!-- <phase>generate-resources</phase>-->
<configuration> <!-- <configuration>-->
<target> <!-- <target>-->
<move todir="src/main/resources/static"> <!-- <move todir="src/main/resources/static">-->
<fileset dir="../frontend/dist"> <!-- <fileset dir="../frontend/dist">-->
<exclude name="*.html"/> <!-- <exclude name="*.html"/>-->
</fileset> <!-- </fileset>-->
</move> <!-- </move>-->
<move todir="src/main/resources/templates"> <!-- <move todir="src/main/resources/templates">-->
<fileset dir="../frontend/dist"> <!-- <fileset dir="../frontend/dist">-->
<include name="*.html"/> <!-- <include name="*.html"/>-->
</fileset> <!-- </fileset>-->
</move> <!-- </move>-->
</target> <!-- </target>-->
</configuration> <!-- </configuration>-->
<goals> <!-- <goals>-->
<goal>run</goal> <!-- <goal>run</goal>-->
</goals> <!-- </goals>-->
</execution> <!-- </execution>-->
</executions> <!-- </executions>-->
</plugin> <!-- </plugin>-->
</plugins> </plugins>
</build> </build>
......
package io.dataease.base.domain;
import java.io.Serializable;
import lombok.Data;
@Data
public class DatasetRowPermissions implements Serializable {
private String id;
private String authTargetType;
private Long authTargetId;
private String datasetId;
private String datasetFieldId;
private String filter;
private Long updateTime;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package io.dataease.base.mapper;
import io.dataease.base.domain.DatasetRowPermissions;
import io.dataease.base.domain.DatasetRowPermissionsExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface DatasetRowPermissionsMapper {
long countByExample(DatasetRowPermissionsExample example);
int deleteByExample(DatasetRowPermissionsExample example);
int deleteByPrimaryKey(String id);
int insert(DatasetRowPermissions record);
int insertSelective(DatasetRowPermissions record);
List<DatasetRowPermissions> selectByExample(DatasetRowPermissionsExample example);
DatasetRowPermissions selectByPrimaryKey(String id);
int updateByExampleSelective(@Param("record") DatasetRowPermissions record, @Param("example") DatasetRowPermissionsExample example);
int updateByExample(@Param("record") DatasetRowPermissions record, @Param("example") DatasetRowPermissionsExample example);
int updateByPrimaryKeySelective(DatasetRowPermissions record);
int updateByPrimaryKey(DatasetRowPermissions record);
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.dataease.base.mapper.DatasetRowPermissionsMapper">
<resultMap id="BaseResultMap" type="io.dataease.base.domain.DatasetRowPermissions">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="auth_target_type" jdbcType="VARCHAR" property="authTargetType" />
<result column="auth_target_id" jdbcType="BIGINT" property="authTargetId" />
<result column="dataset_id" jdbcType="VARCHAR" property="datasetId" />
<result column="dataset_field_id" jdbcType="VARCHAR" property="datasetFieldId" />
<result column="filter" jdbcType="VARCHAR" property="filter" />
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
id, auth_target_type, auth_target_id, dataset_id, dataset_field_id, `filter`, update_time
</sql>
<select id="selectByExample" parameterType="io.dataease.base.domain.DatasetRowPermissionsExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from dataset_row_permissions
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from dataset_row_permissions
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from dataset_row_permissions
where id = #{id,jdbcType=VARCHAR}
</delete>
<delete id="deleteByExample" parameterType="io.dataease.base.domain.DatasetRowPermissionsExample">
delete from dataset_row_permissions
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="io.dataease.base.domain.DatasetRowPermissions">
insert into dataset_row_permissions (id, auth_target_type, auth_target_id,
dataset_id, dataset_field_id, `filter`,
update_time)
values (#{id,jdbcType=VARCHAR}, #{authTargetType,jdbcType=VARCHAR}, #{authTargetId,jdbcType=BIGINT},
#{datasetId,jdbcType=VARCHAR}, #{datasetFieldId,jdbcType=VARCHAR}, #{filter,jdbcType=VARCHAR},
#{updateTime,jdbcType=BIGINT})
</insert>
<insert id="insertSelective" parameterType="io.dataease.base.domain.DatasetRowPermissions">
insert into dataset_row_permissions
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="authTargetType != null">
auth_target_type,
</if>
<if test="authTargetId != null">
auth_target_id,
</if>
<if test="datasetId != null">
dataset_id,
</if>
<if test="datasetFieldId != null">
dataset_field_id,
</if>
<if test="filter != null">
`filter`,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="authTargetType != null">
#{authTargetType,jdbcType=VARCHAR},
</if>
<if test="authTargetId != null">
#{authTargetId,jdbcType=BIGINT},
</if>
<if test="datasetId != null">
#{datasetId,jdbcType=VARCHAR},
</if>
<if test="datasetFieldId != null">
#{datasetFieldId,jdbcType=VARCHAR},
</if>
<if test="filter != null">
#{filter,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=BIGINT},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="io.dataease.base.domain.DatasetRowPermissionsExample" resultType="java.lang.Long">
select count(*) from dataset_row_permissions
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update dataset_row_permissions
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.authTargetType != null">
auth_target_type = #{record.authTargetType,jdbcType=VARCHAR},
</if>
<if test="record.authTargetId != null">
auth_target_id = #{record.authTargetId,jdbcType=BIGINT},
</if>
<if test="record.datasetId != null">
dataset_id = #{record.datasetId,jdbcType=VARCHAR},
</if>
<if test="record.datasetFieldId != null">
dataset_field_id = #{record.datasetFieldId,jdbcType=VARCHAR},
</if>
<if test="record.filter != null">
`filter` = #{record.filter,jdbcType=VARCHAR},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime,jdbcType=BIGINT},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update dataset_row_permissions
set id = #{record.id,jdbcType=VARCHAR},
auth_target_type = #{record.authTargetType,jdbcType=VARCHAR},
auth_target_id = #{record.authTargetId,jdbcType=BIGINT},
dataset_id = #{record.datasetId,jdbcType=VARCHAR},
dataset_field_id = #{record.datasetFieldId,jdbcType=VARCHAR},
`filter` = #{record.filter,jdbcType=VARCHAR},
update_time = #{record.updateTime,jdbcType=BIGINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="io.dataease.base.domain.DatasetRowPermissions">
update dataset_row_permissions
<set>
<if test="authTargetType != null">
auth_target_type = #{authTargetType,jdbcType=VARCHAR},
</if>
<if test="authTargetId != null">
auth_target_id = #{authTargetId,jdbcType=BIGINT},
</if>
<if test="datasetId != null">
dataset_id = #{datasetId,jdbcType=VARCHAR},
</if>
<if test="datasetFieldId != null">
dataset_field_id = #{datasetFieldId,jdbcType=VARCHAR},
</if>
<if test="filter != null">
`filter` = #{filter,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.DatasetRowPermissions">
update dataset_row_permissions
set auth_target_type = #{authTargetType,jdbcType=VARCHAR},
auth_target_id = #{authTargetId,jdbcType=BIGINT},
dataset_id = #{datasetId,jdbcType=VARCHAR},
dataset_field_id = #{datasetFieldId,jdbcType=VARCHAR},
`filter` = #{filter,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=BIGINT}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
package io.dataease.base.mapper.ext; package io.dataease.base.mapper.ext;
import io.dataease.base.domain.DatasetRowPermissions;
import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.controller.sys.response.RoleUserItem;
import io.dataease.dto.dataset.DataSetRowPermissionsDTO;
import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.DataSetTableDTO;
import java.util.List; import java.util.List;
...@@ -14,11 +10,4 @@ public interface ExtDataSetTableMapper { ...@@ -14,11 +10,4 @@ public interface ExtDataSetTableMapper {
DataSetTableDTO searchOne(DataSetTableRequest request); DataSetTableDTO searchOne(DataSetTableRequest request);
List<DataSetRowPermissionsDTO> searchRowPermissons(GridExample example);
List<RoleUserItem> searchAuthUsers(DatasetRowPermissions example);
List<RoleUserItem> searchAuthRoles(DatasetRowPermissions example);
List<RoleUserItem> searchAuthDepts(DatasetRowPermissions example);
} }
...@@ -7,9 +7,6 @@ ...@@ -7,9 +7,6 @@
<result column="privileges" property="privileges"/> <result column="privileges" property="privileges"/>
</resultMap> </resultMap>
<resultMap id="RowPermissonsDTO" type="io.dataease.dto.dataset.DataSetRowPermissionsDTO"
extends="io.dataease.base.mapper.DatasetRowPermissionsMapper.BaseResultMap">
</resultMap>
<resultMap id="roleItemMap" type="io.dataease.controller.sys.response.RoleUserItem"> <resultMap id="roleItemMap" type="io.dataease.controller.sys.response.RoleUserItem">
<id property="id" column="id"/> <id property="id" column="id"/>
...@@ -103,58 +100,4 @@ ...@@ -103,58 +100,4 @@
ORDER BY CONVERT(`name` using gbk) ORDER BY CONVERT(`name` using gbk)
</select> </select>
<select id="searchRowPermissons" resultMap="RowPermissonsDTO" parameterType="io.dataease.base.mapper.ext.query.GridExample">
SELECT dataset_table.name as datasetName, dataset_table_field.name as fieldName, dataset_row_permissions.*
FROM dataset_row_permissions
left join dataset_table on dataset_table.id=dataset_row_permissions.dataset_id
left join dataset_table_field on dataset_table_field.id=dataset_row_permissions.dataset_field_id
<if test="_parameter != null">
<include refid="io.dataease.base.mapper.ext.query.GridSql.gridCondition" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="orderByClause == null">
order by dataset_row_permissions.update_time desc
</if>
</select>
<select id="searchAuthUsers" resultMap="roleItemMap">
SELECT sys_user.user_id as id, sys_user.username as name
FROM sys_auth
left join sys_auth_detail on sys_auth.id=sys_auth_detail.auth_id
left join sys_user on sys_user.user_id=sys_auth.auth_target
where sys_auth.auth_target_type='user'
and sys_auth.auth_source_type='dataset'
and sys_auth.auth_source=#{datasetId,jdbcType=VARCHAR}
and sys_auth_detail.privilege_type=1
and sys_auth_detail.privilege_value=1;
</select>
<select id="searchAuthRoles" resultMap="roleItemMap">
SELECT sys_role.role_id as id, sys_role.name as name
FROM sys_auth
left join sys_auth_detail on sys_auth.id=sys_auth_detail.auth_id
left join sys_role on sys_role.role_id=sys_auth.auth_target
where sys_auth.auth_target_type='role'
and sys_auth.auth_source_type='dataset'
and sys_auth.auth_source=#{datasetId,jdbcType=VARCHAR}
and sys_auth_detail.privilege_type=1
and sys_auth_detail.privilege_value=1;
</select>
<select id="searchAuthDepts" resultMap="roleItemMap">
SELECT sys_dept.dept_id as id, sys_dept.name as name
FROM sys_auth
left join sys_auth_detail on sys_auth.id=sys_auth_detail.auth_id
left join sys_dept on sys_dept.dept_id=sys_auth.auth_target
where sys_auth.auth_target_type='dept'
and sys_auth.auth_source_type='dataset'
and sys_auth.auth_source=#{datasetId,jdbcType=VARCHAR}
and sys_auth_detail.privilege_type=1
and sys_auth_detail.privilege_value=1;
</select>
</mapper> </mapper>
...@@ -19,7 +19,7 @@ public class DefaultLicenseService { ...@@ -19,7 +19,7 @@ public class DefaultLicenseService {
private InnerLicenseService innerLicenseService; private InnerLicenseService innerLicenseService;
private static final String LICENSE_ID = "fit2cloud_license"; 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"; private static final String product = "DataEase";
public F2CLicenseResponse validateLicense(String product, String licenseKey) { public F2CLicenseResponse validateLicense(String product, String licenseKey) {
......
package io.dataease.controller.dataset;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.base.domain.DatasetRowPermissions;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.dto.dataset.DataSetRowPermissionsDTO;
import io.dataease.service.dataset.DataSetTableRowPermissionsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@Api(tags = "数据集:数据集行权限")
@ApiSupport(order = 90)
@RestController
@RequestMapping("dataset/rowPermissions")
public class DataSetTableRowPermissionsController {
@Resource
private DataSetTableRowPermissionsService dataSetTableRowPermissionsService;
@ApiOperation("保存")
@PostMapping("save")
public void save(@RequestBody DatasetRowPermissions datasetRowPermissions) throws Exception {
dataSetTableRowPermissionsService.save(datasetRowPermissions);
}
@ApiOperation("分页查询")
@PostMapping("/pageList/{datasetId}/{goPage}/{pageSize}")
public Pager<List<DataSetRowPermissionsDTO>> rowPermissions(@PathVariable String datasetId, @PathVariable int goPage, @PathVariable int pageSize, @RequestBody BaseGridRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
return PageUtils.setPageInfo(page, dataSetTableRowPermissionsService.searchRowPermissions(request, datasetId));
}
@ApiOperation("有权限的对象")
@PostMapping("/authObjs")
public List<Object> authObjs(@RequestBody DataSetRowPermissionsDTO request) {
return (List<Object>) dataSetTableRowPermissionsService.authObjs(request);
}
@ApiOperation("详情")
@PostMapping("/dataSetRowPermissionInfo")
public DataSetRowPermissionsDTO dataSetRowPermissionInfo(@RequestBody DataSetRowPermissionsDTO request) {
return dataSetTableRowPermissionsService.dataSetRowPermissionInfo(request);
}
@ApiOperation("删除")
@PostMapping("/delete/{id}")
public void dataSetRowPermissionInfo(@PathVariable String id) {
dataSetTableRowPermissionsService.delete(id);
}
}
package io.dataease.dto.dataset;
import io.dataease.base.domain.DatasetRowPermissions;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @Author gin
* @Date 2021/3/9 3:19 下午
*/
@Getter
@Setter
public class DataSetRowPermissionsDTO extends DatasetRowPermissions {
@ApiModelProperty("数据集名称")
private String datasetName;
@ApiModelProperty("字段名称")
private String fieldName;
@ApiModelProperty("授权对象名称")
private String authTargetName;
}
package io.dataease.plugins.server;
import io.dataease.plugins.config.SpringContextUtil;
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.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("plugin/dataset/rowPermissions")
public class RowPermissionsController {
@ApiOperation("保存")
@PostMapping("save")
public void save(@RequestBody DatasetRowPermissions datasetRowPermissions) throws Exception {
RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
rowPermissionService.save(datasetRowPermissions);
}
@ApiOperation("分页查询")
@PostMapping("/list")
public List<DataSetRowPermissionsDTO> rowPermissions(@RequestBody XpackSysAuthDetailDTO request) {
RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
return rowPermissionService.searchRowPermissions(request);
}
@ApiOperation("删除")
@GetMapping("/delete/{id}")
public void dataSetRowPermissionInfo(@PathVariable String id) {
RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
rowPermissionService.delete(id);
}
}
...@@ -42,12 +42,13 @@ public class XAuthServer { ...@@ -42,12 +42,13 @@ public class XAuthServer {
public List<XpackSysAuthDetail>authDetailsModel(@PathVariable String authType){ public List<XpackSysAuthDetail>authDetailsModel(@PathVariable String authType){
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class); AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
List<XpackSysAuthDetail> authDetails = sysAuthService.searchAuthDetailsModel(authType); List<XpackSysAuthDetail> authDetails = sysAuthService.searchAuthDetailsModel(authType);
// if(authType.equalsIgnoreCase("dataset")){ if(authType.equalsIgnoreCase("dataset")){
// XpackSysAuthDetail xpackSysAuthDetail = new XpackSysAuthDetail(); XpackSysAuthDetail xpackSysAuthDetail = new XpackSysAuthDetail();
// xpackSysAuthDetail.setPrivilegeName("i18n_auth_row_permission"); xpackSysAuthDetail.setPrivilegeName("i18n_auth_row_permission");
// xpackSysAuthDetail.setPrivilegeType(20); xpackSysAuthDetail.setPrivilegeType(20);
// authDetails.add(3,xpackSysAuthDetail); xpackSysAuthDetail.setPrivilegeValue(1);
// } authDetails.add(0,xpackSysAuthDetail);
}
return authDetails; return authDetails;
} }
......
package io.dataease.service.dataset;
import io.dataease.base.domain.DatasetRowPermissions;
import io.dataease.base.domain.DatasetRowPermissionsExample;
import io.dataease.base.mapper.DatasetRowPermissionsMapper;
import io.dataease.base.mapper.SysDeptMapper;
import io.dataease.base.mapper.SysRoleMapper;
import io.dataease.base.mapper.SysUserMapper;
import io.dataease.base.mapper.ext.ExtDataSetTableMapper;
import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.dto.dataset.DataSetRowPermissionsDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@Service
@Transactional(rollbackFor = Exception.class)
public class DataSetTableRowPermissionsService {
@Resource
private ExtDataSetTableMapper extDataSetTableMapper;
@Resource
private DatasetRowPermissionsMapper datasetRowPermissionsMapper;
@Resource
private SysUserMapper sysUserMapper;
@Resource
private SysRoleMapper sysRoleMapper;
@Resource
private SysDeptMapper sysDeptMapper;
public List<DataSetRowPermissionsDTO> searchRowPermissions(BaseGridRequest request, String datasetId){
List<ConditionEntity> conditionEntities = request.getConditions() == null ? new ArrayList<>() : request.getConditions();
ConditionEntity entity = new ConditionEntity();
entity.setField("dataset_row_permissions.dataset_id");
entity.setOperator("eq");
entity.setValue(datasetId);
conditionEntities.add(entity);
request.setConditions(conditionEntities);
GridExample gridExample = request.convertExample();
gridExample.setExtendCondition(AuthUtils.getUser().getUserId().toString());
return extDataSetTableMapper.searchRowPermissons(gridExample);
}
public List<? extends Object> authObjs(DataSetRowPermissionsDTO request){
switch (request.getAuthTargetType()) {
case "user":
return extDataSetTableMapper.searchAuthUsers(request);
case "role":
return extDataSetTableMapper.searchAuthRoles(request);
case "dept":
return extDataSetTableMapper.searchAuthDepts(request);
default:
return new ArrayList<>();
}
}
public void save(DatasetRowPermissions datasetRowPermissions){
if(StringUtils.isEmpty(datasetRowPermissions.getId())){
datasetRowPermissions.setId(UUID.randomUUID().toString());
datasetRowPermissions.setUpdateTime(System.currentTimeMillis());
datasetRowPermissionsMapper.insert(datasetRowPermissions);
}else {
datasetRowPermissions.setUpdateTime(System.currentTimeMillis());
datasetRowPermissionsMapper.updateByPrimaryKey(datasetRowPermissions);
}
}
public DataSetRowPermissionsDTO dataSetRowPermissionInfo(DataSetRowPermissionsDTO datasetRowPermissions){
switch (datasetRowPermissions.getAuthTargetType()) {
case "user":
datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysUserMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getUsername());
break;
case "role":
datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysRoleMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getName());
break;
case "dept":
datasetRowPermissions.setAuthTargetName(Optional.ofNullable(sysDeptMapper.selectByPrimaryKey(datasetRowPermissions.getAuthTargetId())).get().getName());
break;
default:
break;
}
return datasetRowPermissions;
}
public void delete(String id){
datasetRowPermissionsMapper.deleteByPrimaryKey(id);
}
public List<DatasetRowPermissions> listDatasetRowPermissions(String datasetId, List<Long>authTargetIds, String authTargetType){
if(CollectionUtils.isEmpty(authTargetIds)){
return new ArrayList<>();
}
DatasetRowPermissionsExample example = new DatasetRowPermissionsExample();
example.createCriteria().andDatasetIdEqualTo(datasetId).andAuthTargetTypeEqualTo(authTargetType).andAuthTargetIdIn(authTargetIds);
return datasetRowPermissionsMapper.selectByExample(example);
}
}
...@@ -19,25 +19,23 @@ import io.dataease.controller.request.dataset.DataSetGroupRequest; ...@@ -19,25 +19,23 @@ import io.dataease.controller.request.dataset.DataSetGroupRequest;
import io.dataease.controller.request.dataset.DataSetTableRequest; import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.controller.request.dataset.DataSetTaskRequest; import io.dataease.controller.request.dataset.DataSetTaskRequest;
import io.dataease.controller.response.DataSetDetail; import io.dataease.controller.response.DataSetDetail;
import io.dataease.commons.constants.DatasourceTypes;
import io.dataease.dto.chart.ChartCustomFilterDTO; import io.dataease.dto.chart.ChartCustomFilterDTO;
import io.dataease.dto.datasource.TableFiled; import io.dataease.dto.datasource.TableFiled;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.xpack.auth.dto.request.DatasetRowPermissions;
import io.dataease.plugins.xpack.auth.service.RowPermissionService;
import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
import io.dataease.provider.datasource.DatasourceProvider; import io.dataease.provider.datasource.DatasourceProvider;
import io.dataease.provider.datasource.JdbcProvider; import io.dataease.provider.datasource.JdbcProvider;
import io.dataease.provider.ProviderFactory; import io.dataease.provider.ProviderFactory;
import io.dataease.controller.request.datasource.DatasourceRequest; import io.dataease.controller.request.datasource.DatasourceRequest;
import io.dataease.controller.response.DataSetDetail;
import io.dataease.dto.dataset.*; import io.dataease.dto.dataset.*;
import io.dataease.dto.dataset.union.UnionDTO; import io.dataease.dto.dataset.union.UnionDTO;
import io.dataease.dto.dataset.union.UnionItemDTO; import io.dataease.dto.dataset.union.UnionItemDTO;
import io.dataease.dto.dataset.union.UnionParamDTO; import io.dataease.dto.dataset.union.UnionParamDTO;;
import io.dataease.dto.datasource.TableFiled;
import io.dataease.exception.DataEaseException; import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator; import io.dataease.i18n.Translator;
import io.dataease.plugins.loader.ClassloaderResponsity; import io.dataease.plugins.loader.ClassloaderResponsity;
import io.dataease.provider.ProviderFactory;
import io.dataease.provider.datasource.DatasourceProvider;
import io.dataease.provider.datasource.JdbcProvider;
import io.dataease.provider.query.DDLProvider; import io.dataease.provider.query.DDLProvider;
import io.dataease.provider.query.QueryProvider; import io.dataease.provider.query.QueryProvider;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -102,8 +100,6 @@ public class DataSetTableService { ...@@ -102,8 +100,6 @@ public class DataSetTableService {
private ExtDataSetGroupMapper extDataSetGroupMapper; private ExtDataSetGroupMapper extDataSetGroupMapper;
@Resource @Resource
private DatasetTableFieldMapper datasetTableFieldMapper; private DatasetTableFieldMapper datasetTableFieldMapper;
@Resource
private DataSetTableRowPermissionsService dataSetTableRowPermissionsService;
private static final String lastUpdateTime = "${__last_update_time__}"; private static final String lastUpdateTime = "${__last_update_time__}";
private static final String currentUpdateTime = "${__current_update_time__}"; private static final String currentUpdateTime = "${__current_update_time__}";
...@@ -445,9 +441,14 @@ public class DataSetTableService { ...@@ -445,9 +441,14 @@ public class DataSetTableService {
private List<DatasetRowPermissions> rowPermissions(String datasetId){ private List<DatasetRowPermissions> rowPermissions(String datasetId){
List<DatasetRowPermissions> datasetRowPermissions = new ArrayList<>(); List<DatasetRowPermissions> datasetRowPermissions = new ArrayList<>();
datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getUserId()), "user")); Map<String, RowPermissionService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((RowPermissionService.class));
datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, AuthUtils.getUser().getRoles().stream().map(CurrentRoleDto::getId).collect(Collectors.toList()) , "role")); if(beansOfType.keySet().size() == 0) {
datasetRowPermissions.addAll(dataSetTableRowPermissionsService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getDeptId()), "dept")); return new ArrayList<>();
}
RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
datasetRowPermissions.addAll(rowPermissionService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getUserId()), "user"));
datasetRowPermissions.addAll(rowPermissionService.listDatasetRowPermissions(datasetId, AuthUtils.getUser().getRoles().stream().map(CurrentRoleDto::getId).collect(Collectors.toList()) , "role"));
datasetRowPermissions.addAll(rowPermissionService.listDatasetRowPermissions(datasetId, Collections.singletonList(AuthUtils.getUser().getDeptId()), "dept"));
return datasetRowPermissions; return datasetRowPermissions;
} }
...@@ -467,7 +468,7 @@ public class DataSetTableService { ...@@ -467,7 +468,7 @@ public class DataSetTableService {
rowPermissions(datasetTable.getId()).forEach(datasetRowPermissions -> { rowPermissions(datasetTable.getId()).forEach(datasetRowPermissions -> {
List<ChartCustomFilterDTO> lists = JSONObject.parseArray(datasetRowPermissions.getFilter(), ChartCustomFilterDTO.class); List<ChartCustomFilterDTO> lists = JSONObject.parseArray(datasetRowPermissions.getFilter(), ChartCustomFilterDTO.class);
lists.forEach(chartCustomFilterDTO -> { lists.forEach(chartCustomFilterDTO -> {
DatasetTableField field = getFieldById(fields, chartCustomFilterDTO.getFieldId()); DatasetTableField field = getFieldById(fields, datasetRowPermissions.getDatasetFieldId());
if(field != null){ if(field != null){
chartCustomFilterDTO.setFieldId(datasetRowPermissions.getDatasetFieldId()); chartCustomFilterDTO.setFieldId(datasetRowPermissions.getDatasetFieldId());
chartCustomFilterDTO.setField(field); chartCustomFilterDTO.setField(field);
...@@ -1686,7 +1687,7 @@ public class DataSetTableService { ...@@ -1686,7 +1687,7 @@ public class DataSetTableService {
dataSetDetail.setTable(table); dataSetDetail.setTable(table);
if (ObjectUtils.isNotEmpty(table)) { if (ObjectUtils.isNotEmpty(table)) {
Datasource datasource = datasourceMapper.selectByPrimaryKey(table.getDataSourceId()); Datasource datasource = datasourceMapper.selectByPrimaryKey(table.getDataSourceId());
datasource.setConfiguration(null); Optional.ofNullable(datasource).orElse(new Datasource()).setConfiguration(null);
dataSetDetail.setDatasource(datasource); dataSetDetail.setDatasource(datasource);
} }
return dataSetDetail; return dataSetDetail;
......
...@@ -1154,6 +1154,16 @@ export default { ...@@ -1154,6 +1154,16 @@ export default {
confirm_sync_field_tips: 'Sync field maybe change edit field,please confirm', confirm_sync_field_tips: 'Sync field maybe change edit field,please confirm',
sync_success: 'Success', sync_success: 'Success',
sync_success_1: 'Success,please sync data again', sync_success_1: 'Success,please sync data again',
row_permission: {
type: 'Type',
name: 'Name',
condition: 'Conditions',
value: 'Value',
add: 'Add row permissions',
edit: 'Edit row permissions',
please_select_field: 'Please select a field'
},
row_permissions: 'Row Permissions',
union_data: 'Union Dataset', union_data: 'Union Dataset',
add_union_table: 'Add Union Dataset', add_union_table: 'Add Union Dataset',
edit_union: 'Edit Union Dataset', edit_union: 'Edit Union Dataset',
......
...@@ -1155,6 +1155,16 @@ export default { ...@@ -1155,6 +1155,16 @@ export default {
confirm_sync_field_tips: '同步字段可能會導致已編輯字段發生變更,請確認', confirm_sync_field_tips: '同步字段可能會導致已編輯字段發生變更,請確認',
sync_success: '同步成功', sync_success: '同步成功',
sync_success_1: '同步成功,請對當前數據集重新執行數據同步操作', sync_success_1: '同步成功,請對當前數據集重新執行數據同步操作',
row_permission: {
type: '類型',
name: '名稱',
condition: '條件',
value: '值',
add: '添加行權限',
edit: '編輯行權限',
please_select_field: '請選擇字段'
},
row_permissions: '行權限',
union_data: '關聯數據集', union_data: '關聯數據集',
add_union_table: '添加關聯數據集', add_union_table: '添加關聯數據集',
edit_union: '編輯關聯數據集', edit_union: '編輯關聯數據集',
......
...@@ -1016,7 +1016,6 @@ export default { ...@@ -1016,7 +1016,6 @@ export default {
field_check: '选中', field_check: '选中',
update_info: '更新信息', update_info: '更新信息',
join_view: '数据关联', join_view: '数据关联',
row_permissions: '行权限',
text: '文本', text: '文本',
time: '时间', time: '时间',
value: '数值', value: '数值',
...@@ -1164,8 +1163,10 @@ export default { ...@@ -1164,8 +1163,10 @@ export default {
condition: '条件', condition: '条件',
value: '值', value: '值',
add: '添加行权限', add: '添加行权限',
edit: '编辑行权限' edit: '编辑行权限',
please_select_field: '请选择字段'
}, },
row_permissions: '行权限',
union_data: '关联数据集', union_data: '关联数据集',
add_union_table: '添加关联数据集', add_union_table: '添加关联数据集',
edit_union: '编辑关联数据集', edit_union: '编辑关联数据集',
......
...@@ -59,9 +59,6 @@ ...@@ -59,9 +59,6 @@
<el-tab-pane v-if="table.type !== 'custom' && !(table.type === 'sql' && table.mode === 0)" :label="$t('dataset.join_view')" name="joinView"> <el-tab-pane v-if="table.type !== 'custom' && !(table.type === 'sql' && table.mode === 0)" :label="$t('dataset.join_view')" name="joinView">
<union-view :param="param" :table="table" /> <union-view :param="param" :table="table" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('dataset.row_permissions')" name="rowPermissions">
<row-permissions v-if="tabActive=='rowPermissions'" :param="param" :table="table" />
</el-tab-pane>
<el-tab-pane v-if="table.mode === 1 && (table.type === 'excel' || table.type === 'db' || table.type === 'sql')" :label="$t('dataset.update_info')" name="updateInfo"> <el-tab-pane v-if="table.mode === 1 && (table.type === 'excel' || table.type === 'db' || table.type === 'sql')" :label="$t('dataset.update_info')" name="updateInfo">
<update-info v-if="tabActive=='updateInfo'" :param="param" :table="table" /> <update-info v-if="tabActive=='updateInfo'" :param="param" :table="table" />
</el-tab-pane> </el-tab-pane>
...@@ -75,12 +72,11 @@ import TabDataPreview from './TabDataPreview' ...@@ -75,12 +72,11 @@ import TabDataPreview from './TabDataPreview'
import UpdateInfo from './UpdateInfo' import UpdateInfo from './UpdateInfo'
import DatasetChartDetail from '../common/DatasetChartDetail' import DatasetChartDetail from '../common/DatasetChartDetail'
import UnionView from './UnionView' import UnionView from './UnionView'
import RowPermissions from './RowPermissions'
import FieldEdit from './FieldEdit' import FieldEdit from './FieldEdit'
export default { export default {
name: 'ViewTable', name: 'ViewTable',
components: {RowPermissions, FieldEdit, UnionView, DatasetChartDetail, UpdateInfo, TabDataPreview }, components: {FieldEdit, UnionView, DatasetChartDetail, UpdateInfo, TabDataPreview },
props: { props: {
param: { param: {
type: Object, type: Object,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论