Engage 中每个应用都应该至少有一个角色。角色包含了对接口(apis
)、页面(pages
)的访问权限。角色会被分配到某个岗位上,绑定该岗位的用户(员工),就具有对这些接口、页面的访问权限。角色的配置可以参考 应用配置手册。
前端通常会根据用户权限,控制某个页面是否可以被用户访问,或者某个按钮是否要进行隐藏。Engage 组件库全局注册了一个 Mixin,其包含两个函数, canAccessApi()
和 canAccessPage()
。通过这两个函数,结合 v-if
或在 script 中使用 this.canAccessXXX()
,就可以根据权限来灵活展示界面内容、友善提示信息了。
# 示例
<template>
<div>
<button v-if="canAccessApi('wechat:/v1/woa/create')" >新建公众号</button>
</div>
</template>
<script>
export default {
created(){
}
}
</script>
# canAccessApi(...args: string[])
判断当前用户是否对某个接口或后端 URL 有访问权限。如果有,则返回 true。
接受一个或多个字符串类型的参数,每个参数表示应用 Id 及其接口路径。如 wechat:/v1/woa/query
就表示是 wechat
应用下的 /v1/woa/query
接口。接口路径可以是一个完整的接口地址(如 /v1/woa/query
),也可以只是一个前缀(如 /v1/woa/
)。
canAccessApi
是基于角色的 apis
配置来校验的。我们来看一个示例,假设现在用户所关联的微信应用(wechat)的角色中,定义了如下的接口权限:
apis:
- /v1/woa/query
- /v1/woa/create
那么:
canAccessApi('wechat:/v1/woa/query')
返回true
canAccessApi('wechat:/v1/woa/remove')
返回false
canAccessApi('wechat:/v1/woa/')
返回false
canAccessApi('wechat:/v1/woa/query/xxx')
返回true
(假设该接口也存在的话)
# canAccessPage(...args: string[])
判断当前用户是否对某个页面或前端 URL 有访问权限。如果有,则返回 true。
接受一个或多个字符串类型的参数,每个参数表示应用 Id 及其接口路径。如 workflow:/workflow/workflow-mgmt
就表示是 workflow
应用下的 /workflow/workflow-mgmt
页面。页面路径可以是一个完整的页面地址(如 /workflow/workflow-mgmt
),也可以只是一个前缀(如 /workflow/
)。
识别规则和 canAccessApi 方法的一样,具体见上方例子。