# 10.授权

# 权限定义

设置-权限定义-资源可新建权限定义

资源 描述 可用操作
* 全部资源 *
@* 全部单据 *|READ|WRITE
@类型KEY 指定单据 *|READ|WRITE
@单据KEY|单据KEY 指定多个单据 *|READ|WRITE
#* 全部数据源 *
#数据源KEY 指定数据源 *
DEF 配置资源 *|REGISTRY|COMPONENT|BPM|DMN|DOCTYPE
DEVOPS 运维资源 *|BPM|CACHE|DATASYNC|DEPLOY
SETTINGS 设置资源 *|MENU|AUTH
SYS 系统资源 *|LOGIN

# 授权限制

TIP

授权限制是一段ElasticSearch的Filter语法

例:一个简单的授权限制,限制用户只能访问ZR01这个单据类型

{
  "term": {
    "docType": "ZR01"
  }
}
1
2
3
4
5

当然,授权限制可以使用SpEL来动态获取当前用户的属性,作为限制条件

下面的例子展示如何获取当前用户单据下的org卡片中的orgId字段作为orgId的过滤条件

{
  "term": {
    "orgId": "${data.org?.orgId}"
  }
}
1
2
3
4
5

更复杂的条件

{
  "bool": {
    "must":[
      {
        "term": {
          "docType": "ZR01"
        }
      },
      {
        "term": {
          "orgId": "${data.org?.orgId}"
        }
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 单据权限

单据权限是单据资源+读或写+限制+扩展规则的组合

# 单据扩展规则

单据扩展规则是一个JSON格式的描述

includes与excludes指定包含或不包含的卡片集合

states指定用户可操作的单据状态

{
    "includes":["card1","card1","card1"],
    "excludes":["card1","card1","card1"],
    "states":["S001","S002"]
}
1
2
3
4
5

TIP

对于用户对单据的读写操作不一致的情况卡,可以分别创建READ操作的权限与WRITE的权限,分别给用户授权