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 方法的一样,具体见上方例子。