forked from github/dataease
Merge pull request #1970 from dataease/pr@dev@refactor_outer-params
feat: 新增资源默认权限继承
This commit is contained in:
commit
613df9af43
@ -5,6 +5,7 @@ import io.dataease.base.domain.DatasetGroup;
|
|||||||
import io.dataease.base.domain.DatasetGroupExample;
|
import io.dataease.base.domain.DatasetGroupExample;
|
||||||
import io.dataease.base.mapper.DatasetGroupMapper;
|
import io.dataease.base.mapper.DatasetGroupMapper;
|
||||||
import io.dataease.base.mapper.ext.ExtDataSetGroupMapper;
|
import io.dataease.base.mapper.ext.ExtDataSetGroupMapper;
|
||||||
|
import io.dataease.commons.constants.AuthConstants;
|
||||||
import io.dataease.commons.constants.DePermissionType;
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
import io.dataease.commons.utils.AuthUtils;
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
import io.dataease.commons.utils.BeanUtils;
|
import io.dataease.commons.utils.BeanUtils;
|
||||||
@ -14,6 +15,7 @@ import io.dataease.controller.request.dataset.DataSetTableRequest;
|
|||||||
import io.dataease.dto.dataset.DataSetGroupDTO;
|
import io.dataease.dto.dataset.DataSetGroupDTO;
|
||||||
import io.dataease.dto.dataset.DataSetTableDTO;
|
import io.dataease.dto.dataset.DataSetTableDTO;
|
||||||
import io.dataease.i18n.Translator;
|
import io.dataease.i18n.Translator;
|
||||||
|
import io.dataease.listener.util.CacheUtils;
|
||||||
import io.dataease.service.sys.SysAuthService;
|
import io.dataease.service.sys.SysAuthService;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
@ -49,6 +51,8 @@ public class DataSetGroupService {
|
|||||||
datasetGroup.setCreateBy(AuthUtils.getUser().getUsername());
|
datasetGroup.setCreateBy(AuthUtils.getUser().getUsername());
|
||||||
datasetGroup.setCreateTime(System.currentTimeMillis());
|
datasetGroup.setCreateTime(System.currentTimeMillis());
|
||||||
datasetGroupMapper.insert(datasetGroup);
|
datasetGroupMapper.insert(datasetGroup);
|
||||||
|
// 清理权限缓存
|
||||||
|
CacheUtils.removeAll(AuthConstants.USER_PERMISSION_CACHE_NAME);
|
||||||
} else {
|
} else {
|
||||||
datasetGroupMapper.updateByPrimaryKeySelective(datasetGroup);
|
datasetGroupMapper.updateByPrimaryKeySelective(datasetGroup);
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ import io.dataease.dto.dataset.union.UnionParamDTO;
|
|||||||
import io.dataease.dto.datasource.TableField;
|
import io.dataease.dto.datasource.TableField;
|
||||||
import io.dataease.exception.DataEaseException;
|
import io.dataease.exception.DataEaseException;
|
||||||
import io.dataease.i18n.Translator;
|
import io.dataease.i18n.Translator;
|
||||||
|
import io.dataease.listener.util.CacheUtils;
|
||||||
import io.dataease.plugins.common.constants.DatasourceTypes;
|
import io.dataease.plugins.common.constants.DatasourceTypes;
|
||||||
import io.dataease.plugins.loader.ClassloaderResponsity;
|
import io.dataease.plugins.loader.ClassloaderResponsity;
|
||||||
import io.dataease.provider.ProviderFactory;
|
import io.dataease.provider.ProviderFactory;
|
||||||
@ -115,6 +116,10 @@ public class DataSetTableService {
|
|||||||
public void batchInsert(List<DataSetTableRequest> datasetTable) throws Exception {
|
public void batchInsert(List<DataSetTableRequest> datasetTable) throws Exception {
|
||||||
for (DataSetTableRequest table : datasetTable) {
|
for (DataSetTableRequest table : datasetTable) {
|
||||||
save(table);
|
save(table);
|
||||||
|
// 清理权限缓存
|
||||||
|
CacheUtils.removeAll(AuthConstants.USER_DATASET_NAME);
|
||||||
|
CacheUtils.removeAll(AuthConstants.ROLE_DATASET_NAME);
|
||||||
|
CacheUtils.removeAll(AuthConstants.DEPT_DATASET_NAME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import io.dataease.auth.annotation.DeCleaner;
|
|||||||
import io.dataease.base.domain.*;
|
import io.dataease.base.domain.*;
|
||||||
import io.dataease.base.mapper.*;
|
import io.dataease.base.mapper.*;
|
||||||
import io.dataease.base.mapper.ext.*;
|
import io.dataease.base.mapper.ext.*;
|
||||||
|
import io.dataease.commons.constants.AuthConstants;
|
||||||
import io.dataease.commons.constants.CommonConstants;
|
import io.dataease.commons.constants.CommonConstants;
|
||||||
import io.dataease.commons.constants.DePermissionType;
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
import io.dataease.commons.constants.PanelConstants;
|
import io.dataease.commons.constants.PanelConstants;
|
||||||
@ -24,6 +25,7 @@ import io.dataease.dto.panel.linkJump.PanelLinkJumpBaseRequest;
|
|||||||
import io.dataease.dto.panel.po.PanelViewInsertDTO;
|
import io.dataease.dto.panel.po.PanelViewInsertDTO;
|
||||||
import io.dataease.exception.DataEaseException;
|
import io.dataease.exception.DataEaseException;
|
||||||
import io.dataease.i18n.Translator;
|
import io.dataease.i18n.Translator;
|
||||||
|
import io.dataease.listener.util.CacheUtils;
|
||||||
import io.dataease.service.chart.ChartViewService;
|
import io.dataease.service.chart.ChartViewService;
|
||||||
import io.dataease.service.dataset.DataSetTableService;
|
import io.dataease.service.dataset.DataSetTableService;
|
||||||
import io.dataease.service.sys.SysAuthService;
|
import io.dataease.service.sys.SysAuthService;
|
||||||
@ -119,6 +121,8 @@ public class PanelGroupService {
|
|||||||
checkPanelName(request.getName(), request.getPid(), PanelConstants.OPT_TYPE_INSERT, null, request.getNodeType());
|
checkPanelName(request.getName(), request.getPid(), PanelConstants.OPT_TYPE_INSERT, null, request.getNodeType());
|
||||||
panelId = newPanel(request);
|
panelId = newPanel(request);
|
||||||
panelGroupMapper.insert(request);
|
panelGroupMapper.insert(request);
|
||||||
|
// 清理权限缓存
|
||||||
|
clearPermissionCache();
|
||||||
} else if ("toDefaultPanel".equals(request.getOptType())) {
|
} else if ("toDefaultPanel".equals(request.getOptType())) {
|
||||||
panelId = UUID.randomUUID().toString();
|
panelId = UUID.randomUUID().toString();
|
||||||
// 转存为默认仪表板
|
// 转存为默认仪表板
|
||||||
@ -133,8 +137,12 @@ public class PanelGroupService {
|
|||||||
newDefaultPanel.setCreateBy(AuthUtils.getUser().getUsername());
|
newDefaultPanel.setCreateBy(AuthUtils.getUser().getUsername());
|
||||||
checkPanelName(newDefaultPanel.getName(), newDefaultPanel.getPid(), PanelConstants.OPT_TYPE_INSERT, newDefaultPanel.getId(), newDefaultPanel.getNodeType());
|
checkPanelName(newDefaultPanel.getName(), newDefaultPanel.getPid(), PanelConstants.OPT_TYPE_INSERT, newDefaultPanel.getId(), newDefaultPanel.getNodeType());
|
||||||
panelGroupMapper.insertSelective(newDefaultPanel);
|
panelGroupMapper.insertSelective(newDefaultPanel);
|
||||||
|
// 清理权限缓存
|
||||||
|
clearPermissionCache();
|
||||||
} else if ("copy".equals(request.getOptType())) {
|
} else if ("copy".equals(request.getOptType())) {
|
||||||
panelId = this.panelGroupCopy(request, null, true);
|
panelId = this.panelGroupCopy(request, null, true);
|
||||||
|
// 清理权限缓存
|
||||||
|
clearPermissionCache();
|
||||||
} else if ("move".equals(request.getOptType())) {
|
} else if ("move".equals(request.getOptType())) {
|
||||||
PanelGroupWithBLOBs panelInfo = panelGroupMapper.selectByPrimaryKey(request.getId());
|
PanelGroupWithBLOBs panelInfo = panelGroupMapper.selectByPrimaryKey(request.getId());
|
||||||
if (panelInfo.getPid().equalsIgnoreCase(request.getPid())) {
|
if (panelInfo.getPid().equalsIgnoreCase(request.getPid())) {
|
||||||
@ -431,9 +439,10 @@ public class PanelGroupService {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
private void clearPermissionCache(){
|
||||||
public void findPanelAttachInfo(String panelId) {
|
CacheUtils.removeAll(AuthConstants.USER_PANEL_NAME);
|
||||||
|
CacheUtils.removeAll(AuthConstants.ROLE_PANEL_NAME);
|
||||||
|
CacheUtils.removeAll(AuthConstants.DEPT_PANEL_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,4 +89,162 @@ INSERT INTO `system_parameter`(`param_key`, `param_value`, `type`, `sort`) VALUE
|
|||||||
|
|
||||||
UPDATE `demo_gdp_district_top100` set `province` = '新疆维吾尔自治区' WHERE `province` = '新疆维吾尔族自治区';
|
UPDATE `demo_gdp_district_top100` set `province` = '新疆维吾尔自治区' WHERE `province` = '新疆维吾尔族自治区';
|
||||||
|
|
||||||
|
ALTER TABLE `sys_auth`
|
||||||
|
ADD COLUMN `copy_from` varchar(255) NULL COMMENT '复制来源' AFTER `update_time`,
|
||||||
|
ADD COLUMN `copy_id` varchar(255) NULL COMMENT '复制ID' AFTER `copy_from`;
|
||||||
|
|
||||||
|
ALTER TABLE `sys_auth_detail`
|
||||||
|
ADD COLUMN `copy_from` varchar(255) NULL COMMENT '复制来源' AFTER `update_time`,
|
||||||
|
ADD COLUMN `copy_id` varchar(255) NULL COMMENT '复制ID' AFTER `copy_from`;
|
||||||
|
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Function structure for copy_auth
|
||||||
|
-- ----------------------------
|
||||||
|
DROP FUNCTION IF EXISTS `copy_auth`;
|
||||||
|
delimiter ;;
|
||||||
|
CREATE FUNCTION `copy_auth`(authSource varchar(255),authSourceType varchar(255),authUser varchar(255))
|
||||||
|
RETURNS varchar(255) CHARSET utf8mb4
|
||||||
|
READS SQL DATA
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
DECLARE authId varchar(255);
|
||||||
|
|
||||||
|
DECLARE userId varchar(255);
|
||||||
|
|
||||||
|
DECLARE copyId varchar(255);
|
||||||
|
|
||||||
|
select uuid() into authId;
|
||||||
|
|
||||||
|
select uuid() into copyId;
|
||||||
|
|
||||||
|
select max(sys_user.user_id) into userId from sys_user where username= authUser;
|
||||||
|
|
||||||
|
delete from sys_auth_detail where auth_id in (
|
||||||
|
select id from sys_auth where sys_auth.auth_source=authSource and sys_auth.auth_source_type=authSourceType
|
||||||
|
);
|
||||||
|
|
||||||
|
delete from sys_auth where sys_auth.auth_source=authSource and sys_auth.auth_source_type=authSourceType;
|
||||||
|
|
||||||
|
INSERT INTO sys_auth (
|
||||||
|
id,
|
||||||
|
auth_source,
|
||||||
|
auth_source_type,
|
||||||
|
auth_target,
|
||||||
|
auth_target_type,
|
||||||
|
auth_time,
|
||||||
|
auth_user
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
authId,
|
||||||
|
authSource,
|
||||||
|
authSourceType,
|
||||||
|
userId,
|
||||||
|
'user',
|
||||||
|
unix_timestamp(
|
||||||
|
now())* 1000,'auto');
|
||||||
|
|
||||||
|
INSERT INTO sys_auth_detail (
|
||||||
|
id,
|
||||||
|
auth_id,
|
||||||
|
privilege_name,
|
||||||
|
privilege_type,
|
||||||
|
privilege_value,
|
||||||
|
privilege_extend,
|
||||||
|
remark,
|
||||||
|
create_user,
|
||||||
|
create_time
|
||||||
|
) SELECT
|
||||||
|
uuid() AS id,
|
||||||
|
authId AS auth_id,
|
||||||
|
sys_auth_detail.privilege_name,
|
||||||
|
sys_auth_detail.privilege_type,
|
||||||
|
1,
|
||||||
|
sys_auth_detail.privilege_extend,
|
||||||
|
sys_auth_detail.remark,
|
||||||
|
'auto' AS create_user,
|
||||||
|
unix_timestamp(now())* 1000 AS create_time
|
||||||
|
FROM
|
||||||
|
sys_auth_detail where auth_id =authSourceType;
|
||||||
|
|
||||||
|
/**继承第一父级权限**/
|
||||||
|
|
||||||
|
insert into sys_auth(
|
||||||
|
id,
|
||||||
|
auth_source,
|
||||||
|
auth_source_type,
|
||||||
|
auth_target,
|
||||||
|
auth_target_type,
|
||||||
|
auth_time,
|
||||||
|
auth_user,
|
||||||
|
copy_from,
|
||||||
|
copy_id
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
uuid() as id,
|
||||||
|
authSource as auth_source,
|
||||||
|
authSourceType as auth_source_type,
|
||||||
|
auth_target,
|
||||||
|
auth_target_type,
|
||||||
|
NOW()* 1000 as auth_time,
|
||||||
|
'auto' as auth_user,
|
||||||
|
id as copy_from,
|
||||||
|
copyId as copy_id
|
||||||
|
FROM
|
||||||
|
sys_auth
|
||||||
|
WHERE
|
||||||
|
auth_source IN (
|
||||||
|
SELECT
|
||||||
|
pid
|
||||||
|
FROM
|
||||||
|
v_auth_model
|
||||||
|
WHERE
|
||||||
|
id = authSource
|
||||||
|
AND model_type = authSourceType
|
||||||
|
)
|
||||||
|
AND auth_source_type = authSourceType;
|
||||||
|
INSERT INTO sys_auth_detail (
|
||||||
|
id,
|
||||||
|
auth_id,
|
||||||
|
privilege_name,
|
||||||
|
privilege_type,
|
||||||
|
privilege_value,
|
||||||
|
privilege_extend,
|
||||||
|
remark,
|
||||||
|
create_user,
|
||||||
|
create_time,
|
||||||
|
copy_from,
|
||||||
|
copy_id
|
||||||
|
) SELECT
|
||||||
|
uuid() AS id,
|
||||||
|
sa_copy.t_id AS auth_id,
|
||||||
|
sys_auth_detail.privilege_name,
|
||||||
|
sys_auth_detail.privilege_type,
|
||||||
|
sys_auth_detail.privilege_value,
|
||||||
|
sys_auth_detail.privilege_extend,
|
||||||
|
sys_auth_detail.remark,
|
||||||
|
'auto' AS create_user,
|
||||||
|
unix_timestamp(
|
||||||
|
now())* 1000 AS create_time,
|
||||||
|
id AS copy_from,
|
||||||
|
copyId AS copy_id
|
||||||
|
FROM
|
||||||
|
sys_auth_detail
|
||||||
|
INNER JOIN (
|
||||||
|
SELECT
|
||||||
|
id AS t_id,
|
||||||
|
copy_from AS s_id
|
||||||
|
FROM
|
||||||
|
sys_auth
|
||||||
|
WHERE
|
||||||
|
copy_id = copyId
|
||||||
|
) sa_copy ON sys_auth_detail.auth_id = sa_copy.s_id;
|
||||||
|
|
||||||
|
RETURN 'success';
|
||||||
|
|
||||||
|
END
|
||||||
|
;;
|
||||||
|
delimiter ;
|
||||||
|
|
||||||
INSERT INTO `my_plugin`(`plugin_id`, `name`, `store`, `free`, `cost`, `category`, `descript`, `version`, `install_type`, `creator`, `load_mybatis`, `release_time`, `install_time`, `module_name`, `icon`) VALUES (3, 'tabs插件', 'default', 0, 20000, 'panel', 'tabs插件', '1.0-SNAPSHOT', NULL, 'fit2cloud-chenyw', 0, NULL, NULL, 'dataease-extensions-tabs-backend', NULL);
|
INSERT INTO `my_plugin`(`plugin_id`, `name`, `store`, `free`, `cost`, `category`, `descript`, `version`, `install_type`, `creator`, `load_mybatis`, `release_time`, `install_time`, `module_name`, `icon`) VALUES (3, 'tabs插件', 'default', 0, 20000, 'panel', 'tabs插件', '1.0-SNAPSHOT', NULL, 'fit2cloud-chenyw', 0, NULL, NULL, 'dataease-extensions-tabs-backend', NULL);
|
Loading…
Reference in New Issue
Block a user