文本概述:在项目中,因标准产品预置的按钮和权限常不满足用户需求,需开发人员添加自定义按钮和权限。文中展示了添加自定义权限项并绑定空操作,再通过后台代码使用PermissionServiceHelper工具类中的hasSpecificPerm接口校验用户权限的步骤。注意权限项需绑定按钮,否则校验会默认通过。
在实际项目中,很多情况下,标准产品预置的按钮和权限是无法满足用户需求的,所以就需要开发人员添加自定义的按钮和权限,以满足用户的操作需求,下面就给大家演示一下,如何添加自定义的权限项并通过后台代码来校验自定义权限。
一、自定义权限项
1、新增按钮,按钮绑定空操作;
2、打开单据的【权限控制】设置,增加权限项
3、将新增的权限项和空操作进行绑定;(此处谨记)
二、后台代码校验权限
此处因为是测试,所以我们在编辑页面的afterCreateNewData中调用我们的权限校验代码,各位可以根据项目要求在其他地方进行调用,标准产品提供了工具类PermissionServiceHelper给我们调用,
具体使用大家参考:https://dev.kingdee.com/index/docsNew/6274687b-69b0-4eaa-833c-7ac5777fa7c5
我们此处使用接口方法hasSpecificPerm给大家做演示:
判断指定用户在特定条件下是否有权(指定应用指定表单的指定权限项,不考虑组织的情况)
接口名:hasSpecificPerm
判断指定用户是否拥有指定应用指定表单的指定权限项。
参数说明
参数名称 | 数据类型 | 必选 | 说明 |
用户ID | Long | 是 | 指定具体的用户ID |
应用ID | String | 是 | 是应用内码(FID),而不是编码(FNUMER) |
实体编码 | String | 是 | 实体的标识 |
权限项 | String | 是 | 权限项目ID |
返回值
返回值是一个Boolean,如果为true,表明验证有权,否则无权。
代码示例
String userIdStr = RequestContext.get().getUserId(); //用户ID
String KEY_APPID = "应用标识"; //APP标识
String appId = AppMetadataCache.getAppInfo(KEY_APPID).getAppId();//应用ID
String entityNum = "界面实体标识"; //实体标识
String permItemId = PermissionUtils.getPermItemId("权限项标识");//权限项ID
Boolean hasSpecificPerm = PermissionUtils.hasSpecificPerm(Long.parseLong(userIdStr), appId, entityNum, permItemId);
PermissionUtils工具类见附件
第一次调用时,因为没有将权限项与按钮绑定,所以每次方法调用都返回true;所以我们跟踪了代码,发现工具类在校验权限时,如果没有绑定按钮的话,会直接return true;所以必须绑定按钮。
自定义权限项并在后台代码校验权限.docx(492.51KB)
PermissionYzUtil.rar(0.78KB)
推荐阅读