fix: scc流程提交审批增加水平越权校验
This commit is contained in:
+7
@@ -41,6 +41,13 @@ public interface IProcessHandleService {
|
|||||||
**/
|
**/
|
||||||
void isMyTask(String taskId);
|
void isMyTask(String taskId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liao
|
||||||
|
* @Date: 2023/11/6 11:59
|
||||||
|
* @Description: 判断Task
|
||||||
|
**/
|
||||||
|
void validTask(String taskId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: liao
|
* @Author: liao
|
||||||
* @Date: 2023/11/6 14:22
|
* @Date: 2023/11/6 14:22
|
||||||
|
|||||||
+37
-3
@@ -257,9 +257,43 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
|||||||
if (Objects.isNull(task)) {
|
if (Objects.isNull(task)) {
|
||||||
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
|
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
//if (!CurrentUserUtil.getId().equals(task.getAssignee())) {
|
LambdaQueryWrapper<ProcessApprovalRecord> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
// throw new JeroBootException(ResultCommon.NO_PERMISSION);
|
lambdaQueryWrapper.eq(ProcessApprovalRecord::getTaskId, taskId);
|
||||||
//}
|
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(lambdaQueryWrapper, false);
|
||||||
|
if (!CurrentUserUtil.getId().equals(processApprovalRecord.getUserId())) {
|
||||||
|
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
String curUserId = CurrentUserUtil.getId();
|
||||||
|
if (!curUserId.equals(processApprovalRecord.getUserId())) {
|
||||||
|
throw new JeroBootException(ResultCommon.NO_PERMISSION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: liao
|
||||||
|
* @Date: 2023/11/6 12:00
|
||||||
|
* @Description: 判断是否是自己的任务
|
||||||
|
**/
|
||||||
|
@Override
|
||||||
|
public void validTask(String taskId) {
|
||||||
|
if (StringUtils.isBlank(taskId)) {
|
||||||
|
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "taskId");
|
||||||
|
}
|
||||||
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||||
|
if (Objects.isNull(task)) {
|
||||||
|
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<ProcessApprovalRecord> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
lambdaQueryWrapper.eq(ProcessApprovalRecord::getTaskId, taskId);
|
||||||
|
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(lambdaQueryWrapper, false);
|
||||||
|
if (!CurrentUserUtil.getId().equals(processApprovalRecord.getUserId())) {
|
||||||
|
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
String curUserId = CurrentUserUtil.getId();
|
||||||
|
if (!curUserId.equals(processApprovalRecord.getUserId())) {
|
||||||
|
throw new JeroBootException(ResultCommon.NO_PERMISSION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+4
-7
@@ -217,9 +217,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
|||||||
// 获取task
|
// 获取task
|
||||||
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
|
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
|
||||||
String taskId = processTask.getTaskId();
|
String taskId = processTask.getTaskId();
|
||||||
if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) {
|
// 校验是否有权限操作此待办
|
||||||
throw new JeroBootException("taskId为空或任务不存在");
|
processHandleService.validTask(taskId);
|
||||||
}
|
|
||||||
String prcId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
String prcId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||||
BasicProcessInfoDTO processInfo = new BasicProcessInfoDTO();
|
BasicProcessInfoDTO processInfo = new BasicProcessInfoDTO();
|
||||||
processInfo.setProcessInstanceId(prcId);
|
processInfo.setProcessInstanceId(prcId);
|
||||||
@@ -269,10 +268,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
|||||||
public void submit(ProcessInfoVO<ProcessSccVO> processInfoVO) {
|
public void submit(ProcessInfoVO<ProcessSccVO> processInfoVO) {
|
||||||
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
|
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
|
||||||
String taskId = processTask.getTaskId();
|
String taskId = processTask.getTaskId();
|
||||||
// 获取task
|
// 校验是否有权限操作此待办
|
||||||
if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) {
|
processHandleService.validTask(taskId);
|
||||||
throw new JeroBootException("taskId为空或任务不存在");
|
|
||||||
}
|
|
||||||
// 获取当前节点的id
|
// 获取当前节点的id
|
||||||
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
|
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
|
||||||
String xmlNodeId = record.getNodeId();
|
String xmlNodeId = record.getNodeId();
|
||||||
|
|||||||
Reference in New Issue
Block a user