这是应用和业务对象的权限模块,包括加载权限、判断权限以及变更通知等功能。
接口:
-
name: string
:模块名称。 -
initGlobal: () => void
:全局初始化模块。 -
load: (canDiff) => Promise
:重新加载权限列表,并根据canDiff
决定判断是否需要发出相应的权限更新事件。 -
get: (level, innerAppName, actionName) => object
:根据层级结构的键,获取权限项。 -
app
:应用相关操作。-
levelName: (appName) => string
:获取应用权限的首层键。 -
get: (appName, innerAppName, actionName) => object
:获取应用模块的权限。如果不存在,则返回null
。 -
register: (func, name, innerAppName, actionName) => string
:注册应用处理事件,返回事件Id。 -
unregister: (funcId, name, innerAppName, actionName) => boolean
:注销应用处理事件。 -
verify: (appName, innerAppName, actionName, data) => boolean
:验证应用模块的权限,如果传了data
,则验证数据权限。 -
verifyData: (metaName, objectid, actionName, data) => Promise<boolean>
:通过接口形式校验是否有数据权限,当有data时,会或上verify
的结果。
-
-
obj
:元数据相关操作。结构和参数同app
部分,appName
改为metaName
即可。 -
verifyField: (authFieldType, metaName, fieldname) => boolean
:验证字段权限,authFieldType
是权限类型,参照Foundation.AuthField
中的常量,然后指定元数据名称和字段名称。 -
verifyDept: (deptPath, deptCode, actionItem) => boolean
:验证部门是否在部门(含下级或不含下级)列表中。deptPath
是待判断的部门路径,deptCode
是待判断的部门Code,actionItem
是权限项。 -
showForceLogoutAlert: () => void
:显示权限更新对话框,强制登出操作,多次操作有加锁,不会弹出多个对话框。 -
type
:权限值的判断。-
isAll: () => boolean
:是否是全部门。 -
isDeptWithSub: () => boolean
:是否是部门含下级。 -
isDeptWithoutSub: () => boolean
:是否是部门不含下级。 -
isOnlyMe: () => boolean
:是否是仅自己。 -
isZeroScope: () => boolean
:有数据权限但是数据范围是0。
-
事件类型:
- 接收环信透传传递的控制消息,用于权限更新。
- 权限更新事件:类型为
[authUpdateEvent, name, innerAppName, action]
,其中authUpdateEvent
是事件分类,name
是业务对象或应用的分组,innerAppName
是内部权限的分配,action
是具体操作。数据是{oldObj, newObj, keys, isDeleted, isCreated, isUpdated}
,其中前两个是新旧权限项,keys
是三层路径,可能小于三层,后三者表示是删除或新增或更新。