feat: show application ownership and scoped console management
This commit is contained in:
@@ -21,7 +21,7 @@ export ORBIT_CONSOLE_APPLICATION_ADMIN=admin
|
||||
5. 「平滑换证」保留 application_id、namespace_id、credential_id、队列、任务和订阅;新 Token 立即生效,旧 Token 在配置的过渡期内继续使用(页面默认 7 天,支持 1/7/30 天),便于逐台更新配置。详情展示旧 Token 实际截止,全部服务切换后可点「结束过渡」。
|
||||
6. 默认「长期有效」,不需要每月人工换证;已有凭据可点「调整有效期」直接设为长期,原 Token 保持不变。
|
||||
|
||||
环境与命名空间形成隔离边界。不同应用应分别创建;同一应用的多个命名空间在列表中分别展示。页面目前支持新建应用及其初始队列,未提供应用删除、身份迁移、跨应用任务列表或现有应用新增命名空间的表单;已有 CLI 的 `--application-id` 仍可增加命名空间,队列 SDK 可增加同范围队列。接入管理页不会改变其他业务页面的账号默认范围。
|
||||
环境与命名空间形成隔离边界。不同应用应分别创建;同一应用的多个命名空间在列表中分别展示。页面支持新建应用及其初始队列;业务列表可通过应用筛选栏切换范围,分别展示各应用数据。未提供应用删除、身份迁移或现有应用新增命名空间的表单;已有 CLI 的 `--application-id` 仍可增加命名空间,队列 SDK 可增加同范围队列。
|
||||
|
||||
## 2. 路由与认证
|
||||
|
||||
@@ -145,3 +145,5 @@ SET_EXPIRY 不生成新 Token,只更新当前有效期;valid_days=0 为长
|
||||
| 数据库/网络故障 | 5xx / 网络错误 | 不假定失败,保留原操作重报 |
|
||||
|
||||
可重复运行的真实 HTTP 场景见 [test-console-applications.py](../../scripts/test-console-applications.py),标准容器入口 `make console-e2e` 同时验证此链路。基础 SDK 使用方式见 [SDK 接入](../sdk/README.md)。
|
||||
|
||||
业务数据的应用筛选、队列分页及会话隔离见[应用范围接口](console-scope.md)。
|
||||
|
||||
52
docs/api/console-scope.md
Normal file
52
docs/api/console-scope.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 控制台应用范围
|
||||
|
||||
此接口服务于内置控制台的单管理员,用于按应用环境读取列表、详情并执行已有管理操作;不是 SDK 的跨应用调用方式。业务服务继续使用自己应用的 Token 和队列。
|
||||
|
||||
## 查看范围元数据
|
||||
|
||||
`GET /console/scope?after=<queue_id>` 只接受登录 Cookie,返回 `data`:
|
||||
|
||||
```json
|
||||
{
|
||||
"entry": {
|
||||
"application_id": "11111111111111111111111111111111",
|
||||
"application": "sample-app",
|
||||
"namespace_id": "22222222222222222222222222222222",
|
||||
"namespace": "default",
|
||||
"environment": "test",
|
||||
"enabled": true
|
||||
},
|
||||
"queues": [{"id": "33333333333333333333333333333333", "name": "jobs"}],
|
||||
"can_switch": true
|
||||
}
|
||||
```
|
||||
|
||||
不指定范围头时返回账号原始应用及授权队列。队列按 ID 升序,每页最多 100 项,存在更多时返回 `next`,下次用 `after=next`;没有更多则省略。应用目录继续使用 `GET /console/applications` 的 50 项分页。名称全部来自数据库,ID 为授权身份,不按应用名称猜测关联。
|
||||
|
||||
## 显式选择应用环境
|
||||
|
||||
部署配置 `ORBIT_CONSOLE_APPLICATION_ADMIN` 指定的登录管理员可发送:
|
||||
|
||||
```http
|
||||
X-Orbit-Console: 1
|
||||
X-Orbit-Namespace: 22222222222222222222222222222222
|
||||
```
|
||||
|
||||
以上请求头只能搭配原登录 Cookie,不能搭配 `Authorization`。服务端不签发、不返回新业务 Token,不更改浏览器会话原始归属。部署配置为空或登录名不匹配时拒绝切换。
|
||||
|
||||
支持范围:
|
||||
|
||||
| 页面 | 请求 | 数据范围 |
|
||||
| --- | --- | --- |
|
||||
| 任务执行 | 现有 `/v1/tasks` 列表、详情、历史及管理动作 | 所选命名空间 + 队列 |
|
||||
| 定时计划 | 现有 `/v1/schedules` 查询、暂停/继续 | 所选命名空间 + 队列 |
|
||||
| 流程实例 | 现有 `/v1/workflows` 查询、控制和人工恢复 | 所选命名空间,含流程固定版本所有队列 |
|
||||
| 结果订阅 | 现有 `/v1/subscriptions` 查询、启停和交付重试 | 所选命名空间 + 队列,管理员可管理该范围内不同 SDK 凭据的已有订阅 |
|
||||
| 保留策略 | `/console/retention`、预览、导出 | 所选命名空间 |
|
||||
| 归档作业 | `/console/archive/plans`、`jobs` 及原管理动作 | 所选命名空间 |
|
||||
|
||||
队列选项仅对任务、计划、订阅生效。此桥接入口不提供创建任务/计划/订阅、发布定义、启动流程、发送信号、Worker 执行或结果消费权限。SDK 原有的权限与订阅归属校验不变。
|
||||
|
||||
每个业务事务重新核验管理员账号、原会话、绑定凭据有效性以及原/目标应用启用状态,再执行原有的资源归属、版本、幂等、核查证据和审计规则。管理审计操作者为 `console:<user_id>`,操作归入目标命名空间。读取其他范围的资源 ID 不会越权返回数据。不存在的范围、未授权范围不自动回退。
|
||||
|
||||
缺少 Cookie 或会话失效返回 401;不允许的范围切换、混用 SDK Bearer、跨站写操作返回 403;目标应用停用或资源不属于当前范围返回 404。非法范围 ID 返回 400。页面切换采用完整导航,旧详情和请求不会在新应用页面呈现;URL 只保留非敏感 ID。
|
||||
Reference in New Issue
Block a user