Commit 984e05cc by luoqi

docs(integration): 登录授权补请求参数字段表 + 修 dictionary 必填/orgScope 拼写

请求参数按 role 表那样逐字段列出(字段/类型/必填/说明),对接方更易懂。
dictionary 标注为选填(schema 是 .optional(),不传换票仍成功,仅显示原始 id)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
parent 4c8c70a7
Pipeline #3338 failed in 0 seconds
...@@ -43,14 +43,14 @@ iframe 内的 token 落地与刷新由 PAC 前端完成。`refreshToken` 过期( ...@@ -43,14 +43,14 @@ iframe 内的 token 落地与刷新由 PAC 前端完成。`refreshToken` 过期(
```jsonc ```jsonc
{ {
"appId": "app_xxxxxx", // PAC 分配 "appId": "app_xxxxxx",
"appSecret": "***", // 配对密钥,仅服务端持有 "appSecret": "***",
"user": { "user": {
"userId": "u_10086", // 宿主侧用户唯一 id "userId": "u_10086",
"tenantId": "grp_001", // 集团 id(见下) "tenantId": "grp_001",
"role": "leader", // staff | leader | admin "role": "leader",
"orgScope": ["B001"], // 数据权限(见下) "orgScope": ["B001"],
"dictionary": { // 可选:id→名,用于页面把 id 显示成名字 "dictionary": {
"clinics": { "C001": "(门店名)" }, "clinics": { "C001": "(门店名)" },
"users": { "u_10086": "(用户名)" } "users": { "u_10086": "(用户名)" }
} }
...@@ -58,7 +58,17 @@ iframe 内的 token 落地与刷新由 PAC 前端完成。`refreshToken` 过期( ...@@ -58,7 +58,17 @@ iframe 内的 token 落地与刷新由 PAC 前端完成。`refreshToken` 过期(
} }
``` ```
请求体为严格模式,未定义字段会被拒绝。 | 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `appId` | string | ✅ | PAC 分配给宿主的应用标识 |
| `appSecret` | string | ✅ | 与 `appId` 配对的密钥,**仅宿主服务端持有**,不下发到浏览器 |
| `user.userId` | string | ✅ | 宿主侧登录用户的唯一 id|
| `user.tenantId` | string | ✅ | 集团 id(组织树的根);单集团宿主固定用一个值。宿主侧有集团id就传id,没有传唯一slug如appId |
| `user.role` | string | ✅ | 功能权限:`staff` / `leader` / `admin`。见下「`role`」 |
| `user.orgScope` | string[] | ✅ | 数据权限:用户可达的组织节点 id 列表;传 `[]` = 全集团不限。见下「`tenantId` 与 `orgScope`」 |
| `user.dictionary` | object | 选填 | `id → 名` 映射,仅用于页面把 id 显示成名字,**不影响权限**。含 `clinics`、`users` 两个子字典。建议提供,否则页面显示原始 id |
> `orgScope` 字段本身必传(哪怕是空数组);请求体为严格模式,未定义的字段会被拒绝。
**`role`** — 功能权限: **`role`** — 功能权限:
...@@ -68,7 +78,7 @@ iframe 内的 token 落地与刷新由 PAC 前端完成。`refreshToken` 过期( ...@@ -68,7 +78,7 @@ iframe 内的 token 落地与刷新由 PAC 前端完成。`refreshToken` 过期(
| `leader` | 主管:在 staff 基础上增加全池查看 / 分配 / 回收 / 统计 | | `leader` | 主管:在 staff 基础上增加全池查看 / 分配 / 回收 / 统计 |
| `admin` | 后台管理员:全部 | | `admin` | 后台管理员:全部 |
**`tenantId` 与 `orgScope` —— 同一套组织 id**。宿主组织是一棵树,根 = 集团(`tenantId`),往下品牌 / 区域 / 诊所;`orgScope` 是用户可达的节点: **`tenantId` 与 `orgScope` —— 宿主侧组织 id**。PAC理解宿主(SaaS)组织是一棵树,根 = 集团(`tenantId`),往下品牌 / 区域 / 诊所等(仅举例);`orgScope` 是用户可达的节点(数据权限):
| 用户 | `orgScope` | | 用户 | `orgScope` |
|---|---| |---|---|
...@@ -77,7 +87,7 @@ iframe 内的 token 落地与刷新由 PAC 前端完成。`refreshToken` 过期( ...@@ -77,7 +87,7 @@ iframe 内的 token 落地与刷新由 PAC 前端完成。`refreshToken` 过期(
| 区域负责人 | `["R-East"]`(区域 → 含其下全部品牌与诊所) | | 区域负责人 | `["R-East"]`(区域 → 含其下全部品牌与诊所) |
| 诊所客服 | `["C001", "C002"]`(诊所) | | 诊所客服 | `["C001", "C002"]`(诊所) |
取值用 PAC 摄入数据里的同一套 id(集团 = `tenant_id`、品牌 = `source_unit`、诊所 = `clinic_id`):**换票传的与该环境数据对得上即可命中**,与"环境"无关。单集团宿主 `tenantId` 用一个固定值。 > 如 `orgScope` 为 `["B001", "C002"]`,可看到的是 B001 下和 C002 下的数据(多个节点取并集)
### 响应参数 ### 响应参数
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment