¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.handler; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.workflow.common.ConditionalOnEnable; |
| | | import org.dromara.workflow.common.enums.TaskAssigneeEnum; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.warm.flow.core.dto.FlowParams; |
| | | import org.dromara.warm.flow.core.handler.PermissionHandler; |
| | | import org.dromara.warm.flow.core.service.impl.TaskServiceImpl; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * åç人æéå¤çå¨ |
| | | * |
| | | * @author AprilWind |
| | | */ |
| | | @ConditionalOnEnable |
| | | @RequiredArgsConstructor |
| | | @Component |
| | | @Slf4j |
| | | public class WorkflowPermissionHandler implements PermissionHandler { |
| | | |
| | | /** |
| | | * 审æ¹åè·åå½ååç人ï¼åçæ¶ä¼æ ¡éªç该æééå |
| | | * åç»å¨{@link TaskServiceImpl#checkAuth(Task, FlowParams)} ä¸è°ç¨ |
| | | * è¿åå½åç¨æ·æééå |
| | | */ |
| | | @Override |
| | | public List<String> permissions() { |
| | | LoginUser loginUser = LoginHelper.getLoginUser(); |
| | | if (ObjectUtil.isNull(loginUser)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | // 使ç¨ä¸ä¸ªæµæ¥æå»ºæéå表 |
| | | return Stream.of( |
| | | // è§è²æéåç¼ |
| | | loginUser.getRoles().stream() |
| | | .map(role -> TaskAssigneeEnum.ROLE.getCode() + role.getRoleId()), |
| | | |
| | | // å²ä½æéåç¼ |
| | | Stream.ofNullable(loginUser.getPosts()) |
| | | .flatMap(Collection::stream) |
| | | .map(post -> TaskAssigneeEnum.POST.getCode() + post.getPostId()), |
| | | |
| | | // ç¨æ·åé¨é¨æé |
| | | Stream.of(String.valueOf(loginUser.getUserId()), |
| | | TaskAssigneeEnum.DEPT.getCode() + loginUser.getDeptId() |
| | | ) |
| | | ) |
| | | .flatMap(stream -> stream) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½ååç人 |
| | | * |
| | | * @return å½ååç人 |
| | | */ |
| | | @Override |
| | | public String getHandler() { |
| | | return LoginHelper.getUserIdStr(); |
| | | } |
| | | |
| | | } |