【亚伟-苍穹系列】之自定义权限项并在后台代码校验权限原创
金蝶云社区-王亚伟
王亚伟
13人赞赏了该文章 2,504次浏览 未经作者许可,禁止转载编辑于2022年05月05日 14:52:33

        

        在实际项目中,很多情况下,标准产品预置的按钮和权限是无法满足用户需求的,所以就需要开发人员添加自定义的按钮和权限,以满足用户的操作需求,下面就给大家演示一下,如何添加自定义的权限项并通过后台代码来校验自定义权限。

 

一、自定义权限项

    1、新增按钮,按钮绑定空操作;

image.png


2、打开单据的【权限控制】设置,增加权限项

image.png

image.png

image.png


3、将新增的权限项和空操作进行绑定;(此处谨记

image.png


二、后台代码校验权限

        此处因为是测试,所以我们在编辑页面的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;所以必须绑定按钮。

image.png



赞 13