功能权限
“权都董”给“权不董”、“权半董”热心介绍了功能权限的五要素,今天他们继续聊功能权限的验权逻辑。
1 验权场景
触发验权有很多种情况,最常见的是以下五种:
1、获取当前用户有权的应用范围;
2、获取当前用户有权的菜单范围;
3、判断当前用户执行当前操作是否有权;
4、获取当前用户在当前应用当前表单的查询权下有权的隔离维度范围;
5、获取当前用户在当前应用当前表单下有权和无权的权限项的范围。
1.1 获取有权的应用范围
如下图,用户在打开选择“应用”时,会对用户拥有的应用验权。
判断用户对某个应用有权的逻辑
要求用户拥有该应用下至少一个授权对象的其中一个权限项。(针对非全员应用);
该应用是“全员应用”,只要用户分配了对应许可分组也会被系统认为有权;
系统参数-公共参数-只显示购买应用,启用则只显示租户购买的应用,即使用户授权了未购买的应用也不会显示;
1.2 获取有权的菜单范围
当用户进入应用工作台时(例如:应付),加载应用菜单(如下图的左侧菜单)时对用户拥有的应用验权。
判断用户对某个应用菜单有权的逻辑
优先获取应用表单配置的权限项(配置路径:开发平台-XX应用-菜单管理-修改菜单-高级信息页签);
其次“打开页面”选择内容获取对应权限,如果选择单据、基础资料则验证菜单多选表单的【新增】权,如果选择列表、动态表单则验证菜单多选表单的【查询】权;
为了方便大家的理解,我们先了解一下菜单元数据。
应用的菜单是可以绑定表单(“页面”选择表单),注意“表单名称”(选择携带)和“菜单名称”(可编辑)可能是不同的。
如下图:菜单是“财务应付处理”,但绑定的表单叫“财务应付单”。
应用菜单的【高级信息】页签,如下图:
“权限项“指定验权的权限项,如配置则最优先;如未配置则根据打开页面的选择获取对应的权限;
“打开页面“中提供下拉选项,不同的表单类型下拉选项各不相同;
如果选择 “单据”或“基础资料”,那么点击菜单后打开表单的详情界面则验证【新增】权;
如果是“其他”(如列表、报表、动态表单等等),则打开表单验证【查询】权。
菜单验权的逻辑(有权则显示),如下图:
上图中的红圈序号和下方序号是一一对应,“显示”即判定有权:
当前菜单所在的应用是全员应用吗?如果是,此菜单有权。
当前菜单绑定的表单是否启用“控制功能权限”,并且至少绑定了一个权限项?如果不是,意味着该表单不需要控权,那么此菜单有权。
当前菜单的“权限项”配置项为空?如果为空,走步骤4;非空,走步骤5。
当前菜单的“打开页面”如果是“单据”或“基础资料”,则验“新增”权,其他情况都验“查询”权。
当前表单的权限项是否存在菜单指定验权的“权限项”?(假设菜单的“权限项”指定“提交”, 当前表单权限项添加“查询”、“新增”和“修改”,没有“提交”;则系统认为该表单不希望验这个“提交”权,所以判定菜单有权。
根据上游步骤要求验证的权限项,验权当前用户是否具有“用户+应用+表单+权限项”的授权(此处不考虑权限控制类型)。
1.3 判断当前执行操作的权限状态
判断用户对某个操作有权的逻辑
点击工具栏,验证该操作对应的权限项,来源元数据配置,如下图:
授权对象的主业务组织在当前用户授权组织范围;
1)授权对象列表常用条件的业务组织或详情界面所选的组织,显示用户的授权组织;
2)授权组织必须具备授权对象要求的组织职能类型;
例如:财务应付单要求结算组织字段所选组织必须有核算组织职能,则组织F7显示的是核算组织视图中的授权组织记录,如果授权组织不具有核算组织职能则不会显示;
超链接打开先验修改权,有权则打开编辑界面;无修改权则再验查看权,有权则打开查看界面;
举例如下:
给用户直接授权,授权组织:A分公司,功能权限:应付-财务应付单-查询,如下图:
财务应付单列表点击【提交】按钮,系统会验当前用户的“应付-财务应付单-提交”权,并且同时验权限控制类型的范围是否匹配。
不具有权限则提示无权,如下图:
财务应付单的“权限控制主字段”(和主业务组织是一致的)是“结算组织”,如下图:
结算组织字段的组织职能是核算组织,视图方案未选(视图方案指定的按指定视图验权,未指定的则取该组织职能的默认视图验权),如下图:
视图方案的默认视图,如下图:
结算组织的值是 “A分公司”,那么点击“提交”时,系统会查“当前用户-应付-财务应付单-提交-A分公司”这样的授权要素组合,如存在则有权,反之则无权。如下图:
此处的组织验权(权限控制类型验权),可以理解为是一种“特别的数据规则校验”,你也可以理解为系统先验“用户-应用-表单-权限项”,判定存在此要素组合的授权后,再判断当前操作的数据中的主业务组织的值和授权的组织范围是否匹配,如匹配,才最终判定有权。
还有一种特别的操作验权就是对修改操作的验权。
列表界面点击超链接(一般是编码)会进入表单详情界面,进入前,获取当前表单的主业务组织的值(A组织),然后系统会验是否存在“当前用户-应付-财务应付单-修改-A组织”的授权要素组合,如下图:
如果存在,则判定有修改权,表单以编辑态打开,如下图:
如果无修改权继续判断是否存在“当前用户-应付-财务应付单-查询-A组织”的授权要素组合,如果存在,则表单以查看态打开(所有字段都不可编辑,只可查看),如下图:
否则提示无权,不可打开。
简单说超链接打开就是:先验修改权,再验查询权
1.4 获取当前应用的表单的查询权下有权的权限控制类型范围
列表打开时,结算组织在“常用条件”中的组织范围,会触发查询有权组织范围的处理,以获取当前用户在“应付-财务应付单-查询”下分配的组织范围,如下图:
如果授权时有选择“分配组织及下级”(如下图),上述结算组织会根据该表单主业务组织的指定组织职能的视图方案来计算下级范围。
1.5 获取当前应用当前表单下全部有权和无权的权限项的范围
这个特性用于“无权按钮隐藏”,需要升级到BOS_V4.0.012以及之后的版本才能生效。
系统参数提供【无权按钮隐藏】(如下图),目前默认不启用,需要可以启用。
启用后,在一个表单的列表或详情界面打开时,系统会判断在“当前用户-应用-表单”这个要素组合下分配的全部有权和无权的权限项信息(不考虑权限控制类型范围),并根据“按钮-操作-权限项”的关系,决定隐藏无权的按钮。
例如:“应付-财务应付单” 只绑定了“查询、修改、新增、审核和反审核”,用户U被管理员授权:
1、“应付-财务应付单-查询-A组织”;
2、“应付-财务应付单-修改-B组织”;
3、“应付-财务应付单-反审核-C组织”。
综合下来,用户U在“应付-财务应付单”要素组合下分配的权限项范围是“查询、修改、反审核”,没有“新增和审核”。 那么用户U打开“应付-财务应付单”的列表界面时会发现,“反审核”按钮出现,但“新增”和“审核”按钮被隐藏了,如下图:
2 划重点
触发验权最常见的五种场景如下:
1、获取当前用户有权的应用范围
用户需要拥有应用下至少一个表单的一个权限项,才会判定对该应用有权。
2、获取当前用户有权的菜单范围
菜单验权逻辑如下图所示:
3、判断当前用户执行当前操作是否有权
先验修改权,再验查询权。
4、获取当前用户在当前应用当前表单的查询权下有权的隔离维度范围
5、获取当前用户在当前应用当前表单下有权和无权的权限项的范围
#往期推荐#
更多精彩内容,“码”上了解!↓
功能权限
本文2024-09-23 00:31:20发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140005.html