接口说明:

导入一个数据权限或者一个资源权限。根据roleName和type查找是否已经存在同名权限,如果存在就更新这个权限的description,如果不存在就创建一个新的叫这个名字的权限。 然后把 uniqueId 和 uniqueIds 中的用户加到这个project里面来,给这些用户赋予导入的权限;给 groupNames 指代的用户组们也增加这个权限。

异常

  1. 如果根据 projectId 找不到项目,返回“对应的项目不存在”
  2. 如果有用户不存在的,返回“对应的用户不存在”
  3. 如果有用户组不存在的,返回“对应的用户组不存在”

补充解释

  1. 数据权限就是【数据行级权限】,资源权限就是【角色】
  2. 导入数据权限,type为2,如果还要设置数据行级权限,增加 dataPermissions 字段
  3. 导入资源权限,type为:0(一级角色)、3(二级角色),如果还要设置资源权限,增加 resourcePermissions 字段
  4. type 和 path 是必传的, resourcePermissions(dataPermissions)是可选的
  5. 如果指定了dataPermissions或者resourcePermissions时,该接口导入前会将该角色所有的权限包括资源权限和数据权限都删掉,然后导入新的用户指定的权限

基本信息:

属性
API /api/dash/role/importDataPermissions
Method POST

请求参数:

字段名称 参数类型 参数说明
token String 鉴权token,只有项目管理员可以访问该接口
uniqueId String(Optional) 导入的角色需要关联的用户账号
uniqueIds Array(Optional) 导入的角色需要关联的用户账号列表
projectId Int 项目id, 要导入到哪个项目里
roleName String 要创建的角色的名称,必须传
path Array(String) 创建的角色的文件夹路径,最多支持一层文件夹,如[“aaa”],表示把角色创建子aaa文件夹下(如果文件夹不存在则自动创建),如要在根目录下创建角色,则传空数组。 亦支持指定文件夹下的数据权限设置
description String(Optional) 可选参数,用于角色描述
groupNames Array(Optional) 导入的角色需要关联的用户组名称列表
dataPermissions Array(Optional) 数据权限列表
resourcePermissions Array(Optional) 资源相关的资源权限列表
importResourceTypes Array(Optional) 导入角色的时候,可以指定导入哪几种资源权限,被指定的资源类型的权限会被情况然后添加。如果不传这个参数,那么角色的所有权限都会被清空。resourcePermissions 参数中涉及到的资源种类,必须被importResourceTypes包含,否则会报错“导入的权限超出 importResourceTypes 指定的范围
type Int 0 一级角色,3 代表二级角色,2 代表行级权限

dataPermissions的数据格式如下:

字段名称 参数类型 参数说明
dataConnectionId Int 数据连接id
details Array 该数据连接下的数据权限列表
mode String 固定值为 “fixed” , 动态值为 “dynamic”

修改资源权限:

{
  "uniqueId": "xiaozhupeiqi@corp.netease.com",
  "uniqueIds": ["xiaozhupeiqi2@corp.netease.com"],
  "groupNames": ["5月10号用户组"],
  "projectId": 63666,
  "path":[],
  "roleName": "5月10号角色",
  "description": "5月10号角色",
  "type": 0,
  "importResourceTypes": ["DATA_CONNECTION", "NEW_REPORT"],
  "resourcePermissions": [ // <== 资源权限专用!!
      {
      "resourceId": 2010,
      "resourceNamePaths": ["lidasong", "3.9"],  //这个字段与resouceId,可以二选一,表示lidasong文件下的名称为3.9的数据连接
      "resourceType": "DATA_CONNECTION",
      //resourceType为[NEW_REPORT,DATA_MODEL,DATA_CONNECTION,SCREEN]资源对应的资源权限为['view', 'edit', 'export', 'copy']
      //resourceType为[ADD_DATA_CONNECTION,ADD_DATA_MODEL,ADD_NEW_REPORT,ADD_SCREEN]对应的资源权限为['add', 'noPrivateAdd']
      //DATA_CONNECTION的资源权限还有自定义SQL: "customSql"
      "permissions": [
        "view",
        "edit"
      ],
      "isFolder": 0, //是文件夹还是普通资源,默认为0
      },
      {
      "resourceNamePaths": [
        "lly"
      ],
      "resourceType": "NEW_REPORT",
      "isFolder": 1,
      "permissions": [
        "view",
        "edit"
      ]
    }
  ]
}

修改数据权限:

{
  "token":"123455",
  "path":[],
  "uniqueId": "xiaozhupeiqi@corp.netease.com",
  "uniqueIds": [
    "xiaozhupeiqi2@corp.netease.com"
  ],
  "groupNames": [
    "5月10号用户组"
  ],
  "projectId": 63666,
  "roleName": "5月10号行级权限",
  "description": "5月10号行级权限",
  "type": 2,
  "dataPermissions": [
    {
      "mode": "dynamic",
      "dataConnectionId": 2010,
      "details": [
        {
          "database": "dev_netease", //数据库名字由数据链接类型决定,如果在建数据模型时需要选择database,这里则需要,否则不需要
          "tableName": "工作表1",
          "selectType": "select",
          "model": "list",
          "filterType": "listFilter",
          "filter": {
            "dim": {
              "field": "本科毕业学校",
              "dataType": "String"
            },
            "attrId": 3
          }
        }
      ]
    },
    {
      "mode": "fixed",
      "dataConnectionId": 2010,
      "details": [
        // listFilter 的例子,行权限
        {
          "type": "row",
          "filterType": "listFilter",
          "selectType": "select",
          "tableName": "订单总表",
          "filter": {
            "dim": {
              "field": "地区",
              "dataType": "String"
            },
            "select": [
              "东北",
              "华北"
            ]
          }
        },
        // treeFilter 的例子,行权限
        {
          "type": "row",
          "filterType": "treeFilter",
          "selectType": "select",
          "tableName": "订单总表",
          "filter": {
            "or": [
              {
                "dims": [
                  {
                    "field": "地区",
                    "dataType": "String"
                  },
                  {
                    "field": "省/自治区",
                    "dataType": "String"
                  }
                ],
                "cond": {
                  "inlist": [
                    [
                      "东北",
                      "黑龙江"
                    ],
                    [
                      "华北",
                      "河北"
                    ]
                  ]
                }
              }
            ]
          }
        },
        // "自定义SQL例子",行权限
        {
          "type": "row",
          "filterType": "treeFilter",
          "selectType": "select",
          "tableExprId": 3,
          "tableName": "自定义sql的名字",
          //自定义sql,数据权限有两种,一种是自定义sql(一定无database),一种是tableName
          "filter": {
            "or": [
              {
                "dims": [
                  {
                    "field": "地区",
                    "dataType": "String"
                  },
                  {
                    "field": "省/自治区",
                    "dataType": "String"
                  }
                ],
                "cond": {
                  "inlist": [
                    [
                      "东北",
                      "黑龙江"
                    ],
                    [
                      "华北",
                      "河北"
                    ]
                  ]
                }
              }
            ]
          }
        },
        //导入列权限
        {
          "dataConnectionId": 700310177,
          "details": [
            {
              "tableName": "bigviz_user",
              "database": "dev_netease",
              //隐藏的字段名称
              "hideFields": [{
                "field": "地区",
                "dataType": "String"
              }]
            }
          ],
          "type": "column"
      }
      ]
    }
  ]
}

成功数据返回:

{
    code: 200,
    result: "ok"
}