metricPermissions 与 users[].metricPermissions 用于按指标 code 配置可见性。服务端会在 yiask_property 与 yiask_custom_metric 中解析指标, 再将结果合并到对应 schema 的 columnPermissions.view 中,而不会在响应中单独返回 metricPermissions 字段。users[].dataRowScope 用于声明用户拥有的数据行权限,key 为 schema sid, value 为逗号分隔的 rowId 字符串。服务端会将这些记录同步到 usersYiaskCollections 中间表。 users[].spaces 用于声明用户需要加入的空间列表。显式传入时,服务端会确保用户加入这些空间, 但不会移除用户已有且未声明的其他空间关联。 如果显式传入 users,该数组会被视为当前 role 的全量用户列表;如果不传 users,则不会修改 users 与 role 的关联。Authorization: Bearer ********************{
"name": "storeOwner",
"title": "店长",
"metricPermissions": [
{
"code": "sales_amount",
"hasPermission": true
},
{
"code": "profit_rate",
"hasPermission": false
}
],
"permissions": {
"dwd_sales_detail_default": {
"rowPermissions": {
"allowUsers": {
"id": "{{ ctx.state.currentUser.id }}"
}
},
"columnPermissions": {
"view": [
"订单ID"
]
}
},
"dim_shops_default": {
"yiaskActions": [
"create",
"update"
],
"rowPermissions": {
"allowUsers": {
"id": "{{ ctx.state.currentUser.id }}"
}
},
"columnPermissions": {
"view": [
"店铺ID",
"店铺名称"
]
}
}
},
"users": [
{
"username": "zhangsan",
"nickname": "张三",
"email": "zhangsan@example.com",
"phone": "13800138001",
"position": "店长",
"password": "Password123!",
"spaces": [
"default",
"north"
],
"dataRowScope": {
"dim_shops_default": "1",
"dwd_sales_detail_default": "10,11"
}
},
{
"username": "lisi",
"nickname": "李四",
"email": "lisi@example.com",
"phone": "13800138002",
"password": "Password123!",
"dataRowScope": {
"dwd_sales_detail_default": "2,3,4"
},
"metricPermissions": [
{
"code": "sales_amount",
"hasPermission": true
}
],
"permissions": {
"dwd_sales_detail_default": {
"rowPermissions": {
"allowUsers": {
"id": "{{ ctx.state.currentUser.id }}"
}
},
"columnPermissions": {
"view": [
"订单ID"
]
}
}
}
}
]
}curl --location '/yiask_roles:updateOrCreateWithPermissions' \
--header 'X-SPACES: default' \
--header 'X-SPACES: {{space}}' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "storeOwner",
"title": "店长",
"metricPermissions": [
{
"code": "sales_amount",
"hasPermission": true
},
{
"code": "profit_rate",
"hasPermission": false
}
],
"permissions": {
"dwd_sales_detail_default": {
"rowPermissions": {
"allowUsers": {
"id": "{{ ctx.state.currentUser.id }}"
}
},
"columnPermissions": {
"view": [
"订单ID"
]
}
},
"dim_shops_default": {
"yiaskActions": [
"create",
"update"
],
"rowPermissions": {
"allowUsers": {
"id": "{{ ctx.state.currentUser.id }}"
}
},
"columnPermissions": {
"view": [
"店铺ID",
"店铺名称"
]
}
}
},
"users": [
{
"username": "zhangsan",
"nickname": "张三",
"email": "zhangsan@example.com",
"phone": "13800138001",
"position": "店长",
"password": "Password123!",
"spaces": [
"default",
"north"
],
"dataRowScope": {
"dim_shops_default": "1",
"dwd_sales_detail_default": "10,11"
}
},
{
"username": "lisi",
"nickname": "李四",
"email": "lisi@example.com",
"phone": "13800138002",
"password": "Password123!",
"dataRowScope": {
"dwd_sales_detail_default": "2,3,4"
},
"metricPermissions": [
{
"code": "sales_amount",
"hasPermission": true
}
],
"permissions": {
"dwd_sales_detail_default": {
"rowPermissions": {
"allowUsers": {
"id": "{{ ctx.state.currentUser.id }}"
}
},
"columnPermissions": {
"view": [
"订单ID"
]
}
}
}
}
]
}'{
"id": 1,
"name": "storeOwner",
"title": "店长",
"permissions": {
"dim_shops_default": {
"rowPermissions": {
"allowUsers": {
"id": "{{ ctx.state.currentUser.id }}"
}
},
"columnPermissions": {
"view": [
"店铺ID",
"店铺名称"
]
}
},
"dwd_sales_detail_default": {
"columnPermissions": {
"view": null
},
"rowPermissions": {
"allowUsers": {
"id": "{{ ctx.state.currentUser.id }}"
}
}
}
}
}