如何使用api配置行列权限
1. 获取 dataset 上的 Security Filter 信息
GET /api/data-source/{dsId}/security-filter
Parameters
| Name | Location | 类型 | 含义 | 是否必填 | 备注 | 
| dsId | Path | String | 数据集id | 是 | |
| token | Header | String | 登录用的Token | 是 | Token需要通过登录接口获取 | 
Header 示例
{
    "token": "guanyuan token"
}
Response
{
    "column":{
        "enabled":true,
        "rules":[]
    },
    "row":{
        "enabled":false,
        "rules":[],
        "defaultRule":{
            "ruleType":"HIDDEN"
        }
    },
    "applyToOwner":false
}
其中, ruleType 目前支持3种
- 
COLUMN (这个是列级权限, 代表不能看的列) 
- 
ADVANCED (高级模式行级权限, 类似 Threshold 的公式) 
- 
FREEFORM (自定义模式行级权限, 完全自己写sql) 
2. 获取打开/关闭 dataset 上的 行/列 Security Filter, 以及是否应用Security Filter 到 "Owner和管理员"
POST api/data-source/{dsId}/security-filter/enable
Parameters
| Name | Location | 类型 | 含义 | 是否必填 | 备注 | 
| token | Header | String | 登录用的Token | 是 | Token需要通过登录接口获取 | 
| dsId | Path | String | 数据集id | 是 | |
| level | Body | String | 级别 | 是 | row:行权限;column:列权限;applyToOwner:应用到管理员和Owner | 
| enable | Body | Boolean | 是否开启 | 是 | true:打开;false:关闭 | 
POST Body 示例
{
    "level": "column", 
    "enable": true       
}
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。
3. dataset 上的 行/列 Security Filter Rule
3.1 新建 dataset 上的 行/列 Security Filter Rule
将已有的权限规则应用到数据集上
POST api/data-source/{dsId}/security-filter/rules
Parameters
| Name | Location | 类型 | 含义 | 是否必填 | 备注 | 
| token | Header | String | 登录的token | 是 | |
| dsId | Path | String | 数据集id | 是 | |
| ruleId | Body | String | 规则id | 是 | |
| userAndGroups | Body | JSON | 用户和用户组 | 是 | |
| ruleType | Body | String | 规则类型 | 是 | COLUMN:列级ADVANCED:行级FREEFORM:自定义 | 
| comment | Body | String | 备注 | ||
| forbiddenColumns | Body | JSON | 不可见字段 | 如添加列权限,必填 | |
| advanced | Body | JSON | 行权限规则 | 如添加行权限,必填 | |
| freeform | Body | String | 自定义规则 | 如添加自定义权限,必填 | 
POST Body 示例
COLUMN列级权限
{
  "ruleId": "b4a956d66bd57464f8f050f4",
  "userAndGroups": [
    {
      "relId": "b1766b1ac99bf4679a1bd762",
      "name": "testUser",
      "relType": "USER"
    }
  ],
  "ruleType": "COLUMN",
  "comment":"testUser cannot read columns",
  "forbiddenColumns": [
    {
      "fdId": "j9259851e2ac14152bd8e41d", /* fdId可以通过预览数据集从network的preview中读取 */
      "name": "city"
    }
  ]
}
ADVANCED行级权限
{
  "userAndGroups": [
    {
      "relId": "b1766b1ac99bf4679a1bd762",
      "name": "testUser",
      "relType": "USER"
    }
  ],
  "ruleType": "ADVANCED",
  "comment":"testUser cannot read rows",
  "advanced": [
    {
      "type": "condition",
      "not": false,
      "value": {
        "name": "2009年",
        "fdType": "DOUBLE",
        "fdId": "ea853c91",
        "metaType": "METRIC",
        "seqNo": 2,
        "filterType": "GE",
        "filterValue": [
          "50",
          ""
        ],
        "advFilter": null
      }
    }
  ]
}
FREEFORM自定义权限
{
  "userAndGroups": [
    {
      "relId": "b1766b1ac99bf4679a1bd762",
      "name": "testUser",
      "relType": "USER"
    }
  ],
  "ruleType": "FREEFORM",
  "comment": "testUser canot read rows (freeform)",
  "freeform": "[city] in 'hangzhou'"
}
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。
3.2 修改 dataset 上的 行/列 Security Filter Rule
POST api/data-source/{dsId}/security-filter/rules/{ruleId}
Parameters
| Name | Location | 类型 | 含义 | 是否必填 | 备注 | 
| token | Header | String | 登录的token | 是 | |
| dsId | Path | String | 数据集id | 是 | |
| ruleId | Path | String | 权限规则id | 是 | |
| userAndGroups | Body | JSON | 用户和用户组 | 是 | |
| ruleType | Body | String | 规则类型 | 是 | COLUMN:列级ADVANCED:行级FREEFORM:自定义 | 
| comment | Body | String | 备注 | ||
| forbiddenColumns | Body | JSON | 不可见字段 | 如修改列权限,必填 | |
| advanced | Body | JSON | 行权限规则 | 如修改行权限,必填 | |
| freeform | Body | String | 自定义规则 | 如修改自定义权限,必填 | 
POST Body 示例(FREEFORM)
{
  "userAndGroups": [
    {
      "relId": "b1766b1ac99bf4679a1bd762",
      "name": "testUser",
      "relType": "USER"
    },
    {
      "relId": "b1766b1ac99bf4679a1bd111",
      "name": "User2",
      "relType": "USER"
    }
  ],
  "ruleType": "FREEFORM",
  "comment": "users canot read rows (freeform)",
  "freeform": "[city] in 'hangzhou'"
}
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。
3.3 删除 dataset 上的 行/列 Security Filter Rule
DELETE api/data-source/{dsId}/security-filter/rules/{ruleId}
Parameters
| Name | Location | 类型 | 含义 | 是否必填 | 备注 | 
| token | Header | String | 登录的token | 是 | |
| dsId | Path | String | 数据集id | 是 | |
| ruleId | Path | String | 权限规则id | 是 | 
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。
4. 修改 dataset 上的 列上的 默认规则
POST api/data-source/{dsId}/security-filter/rules/row-level-default-rule
Parameters
| Name | Location | 类型 | 含义 | 是否必填 | 备注 | 
| dsId | Path | String | 数据集id | 是 | 
POST Body 示例(FREEFORM)
{
  "ruleType": "FREEFORM",
  "comment": "default rule based on city",
  "freeform": "[city] in 'hangzhou'"
}
这里, 支持的几种ruleType是:
- 
HIDDEN (默认规则, 其它用户是不可见的) 
- 
VISIBLE (其它用户全部可见, 这个比较危险, 需要边上有提示!) 
- 
ADVANCED (高级模式列配置, 需要读取额外的字段 advanced), 
- 
FREEFORM (自定义SQL模式, 需要读取额外的字段 freeform) 
Response
返回等同于调用 "获取 dataset 上的 Security Filter 信息" 来获取最新Security Filter 全量信息。