# 流程详情提示【流程外人员无法查看】解决方案

# 自定义列表后,如果使能查看列表的人员能穿透查看具体详情数据,具体方案如下

# 一、实体权限控制

1、实体中开启数据权限 1740381610592.png

2、权限校验中增加实体的数据 该设置需要注意:流程中的人查看数据也会受控制 1740381640253.png

1740381646490.png

3、综上 如设置2没办法合理设置范围时,当前仅支持设置全部人员能查看,通过菜单或者列表的权限进行权限控制。

# 二、客开事项自定义鉴权类

1、客开增加一个鉴权类,实现ThirdPermissionAppService类

@Slf4j
@AppService(value = "Bpm自定义权限校验查看协同")
@DubboService
public class BpmPermissionAppService implements ThirdPermissionAppService {

 	@Override
    public SingleResponse<Map<String, Boolean>> 		checkPermissionByUser(SingleRequest<ThirdCheckResourcePermissionDto> singleRequest) {
		ThirdCheckResourcePermissionDto dto = singleRequest.getData();
        Map<String, Boolean> map = new HashMap<>();
		map.put(resourcePermissionDto.getResourceCode(), true);//返回true则表示有权限
        return SingleResponse.from(map);
    }
}

2、 穿透查看详情的链接中,增加扩展鉴权参数

在打开详情的URL上追加** authObjectId、authAppName **,BPM拿到这2个参数后,调用用户中心的鉴权接口进行鉴权。

url & authObjectId=数据id & authAppName= 应用标识(比如:docmanagement371717577236826126)

authObjectId: 接受字符串类型,可进行扩展,根据应用权限需要参数进行封装。 如应用需要复杂鉴权,则可以authObjectId进行一些业务属性拼接,比如费控应用中预算和报销鉴权方式不统一,则可以authObjectId中拼接应用具体来源标识:4470227144319518573_feikong

authAppName:应用code,当前实现类在什么应用下,就传递该应用code

编撰人:wxju、liucong