fix: scc流程提交审批增加水平越权校验

This commit is contained in:
2024-07-25 11:30:09 +08:00
parent 9a0a3c0d70
commit b961564c10
3 changed files with 48 additions and 10 deletions
@@ -41,6 +41,13 @@ public interface IProcessHandleService {
**/
void isMyTask(String taskId);
/**
* @Author: liao
* @Date: 2023/11/6 11:59
* @Description: 判断Task
**/
void validTask(String taskId);
/**
* @Author: liao
* @Date: 2023/11/6 14:22
@@ -257,9 +257,43 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
if (Objects.isNull(task)) {
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
}
//if (!CurrentUserUtil.getId().equals(task.getAssignee())) {
// throw new JeroBootException(ResultCommon.NO_PERMISSION);
//}
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);
}
}
/**
* @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);
}
}
@@ -217,9 +217,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
// 获取task
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
String taskId = processTask.getTaskId();
if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在");
}
// 校验是否有权限操作此待办
processHandleService.validTask(taskId);
String prcId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
BasicProcessInfoDTO processInfo = new BasicProcessInfoDTO();
processInfo.setProcessInstanceId(prcId);
@@ -269,10 +268,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
public void submit(ProcessInfoVO<ProcessSccVO> processInfoVO) {
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
String taskId = processTask.getTaskId();
// 获取task
if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在");
}
// 校验是否有权限操作此待办
processHandleService.validTask(taskId);
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();