获取应用菜单角色授权状态
查看文档来源信息
- 来源目录:
addons/sys_base/docs - 来源文件:
接口文档/获取应用菜单角色授权状态.md
详细说明
读取当前模块、当前应用范围下已经正式发布的 app_menu 清单,并返回指定角色在该应用菜单清单中的页面、动作、菜单标识授权状态和应用端默认首页。
该接口只服务移动端/应用端菜单权限配置,不读取 system_menu,不写入 sys_authority_menus,不使用 PCWEB 菜单授权结果兜底。接口权限层面,保存后的 app_menu.grantApis 会通过统一重建进入角色 Casbin。
当 appScope 指向单个具体应用时,接口会沿用应用菜单运行态的发布命中规则:先按应用 UUID 匹配,再按 AppID 匹配,再按应用模型 UUID 匹配,最后按当前模块全部应用匹配。若该应用实际命中了某个已发布范围,返回体中的 summary.appScope、summary.appScopeKey 和 publishSummary.appScopeKey 表示实际用于授权隔离的发布范围。
接口信息
| 项目 | 内容 |
|---|---|
| 请求方式 | POST |
| 请求路径 | /sys_base/platform/manifest/getAppMenuAuthorityStatus |
| 来源文件 | 接口文档/获取应用菜单角色授权状态.md |
请求头
| 请求头 | 示例值 | 说明 |
|---|---|---|
Content-Type | application/json | 请求体格式。 |
x-token | <token> | 登录令牌。 |
app-id | <app-id> | 当前应用 ID。 |
addons-type | take_away | 当前模块标识。 |
入参
json
{
"authorityId": 20,
"addonsType": "take_away",
"accessMode": "role",
"appScope": {
"scopeMode": "app_uuids",
"appUuids": ["APP_UUID_001"]
}
}参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
authorityId | number | role 模式必填 | 目标角色 ID;super_admin 模式固定为 0 |
addonsType | string | 是 | 当前模块标识 |
accessMode | string | 否 | 读取视角,取值为 role 或 super_admin;为空时按当前 token 上下文解析 |
appScope.scopeMode | string | 是 | 应用菜单范围,支持 all_apps、app_model_uuids、app_uuids、app_ids |
appScope.appModelUuids | string[] | 条件必填 | scopeMode=app_model_uuids 时必填 |
appScope.appUuids | string[] | 条件必填 | scopeMode=app_uuids 时必填 |
appScope.appIds | string[] | 条件必填 | scopeMode=app_ids 时必填 |
请求示例
当前文档未提供独立请求示例,请参考下方 curl 示例。
响应输出
json
{
"code": 0,
"data": {
"summary": {
"published": true,
"addonsType": "take_away",
"authorityId": 20,
"isSuperAdminRole": false,
"appScopeKey": "scopeMode=app_uuids|appModelUuids=|appUuids=APP_UUID_001|appIds=",
"appScope": {
"scopeMode": "app_uuids",
"appUuids": ["APP_UUID_001"]
},
"catalogVersion": "2026.06.10",
"sourceProjectCode": "take_away",
"versionUuid": "MENU_CATALOG_VERSION_xxx",
"pageCount": 3,
"grantedPageCount": 1,
"actionCount": 5,
"grantedActionCount": 2,
"partialActionCount": 0,
"missingActionCount": 3,
"menuFlagCount": 3,
"compareScope": "published_app_menu",
"compareNote": "当前授权来源为已发布 app_menu 清单,授权结果仅用于移动端/应用端。"
},
"publishSummary": {
"versionUuid": "MENU_CATALOG_VERSION_xxx",
"addonsType": "take_away",
"catalogType": "app_menu",
"catalogVersion": "2026.06.10",
"appScopeKey": "scopeMode=app_uuids|appModelUuids=|appUuids=APP_UUID_001|appIds=",
"pageCount": 3,
"actionCount": 5,
"menuSeedCount": 8,
"publishNote": "应用菜单清单已登记为正式发布版本,可供后续按 addonsType + appScope 精确读取。"
},
"list": [
{
"pageCode": "take_away.app.home",
"pageTitle": "首页",
"menuFlag": "take_away.app.home",
"routeName": "takeAwayAppHome",
"routePath": "/pages/home/index",
"componentPath": "pages/home/index",
"pageGranted": true,
"hidden": false,
"actions": [
{
"actionCode": "take_away.app.home.view",
"actionTitle": "查看首页",
"menuFlags": ["take_away.app.home.view"],
"grantStatus": "granted",
"grantedKeys": ["take_away.app.home.view"],
"missingKeys": []
}
]
}
],
"tree": [],
"defaultPage": {
"pageCode": "take_away.app.home",
"routeName": "takeAwayAppHome",
"menuFlag": "take_away.app.home"
},
"manifestDefaultPage": {
"pageCode": "take_away.app.home",
"routeName": "takeAwayAppHome",
"menuFlag": "take_away.app.home"
}
},
"msg": "success"
}字段说明
| 字段 | 说明 |
|---|---|
data.summary.published | 当前模块、当前应用范围是否已有成功发布的 app_menu |
data.summary.appScopeKey | 后端归一化后的应用范围键;单个具体应用命中其他已发布范围时,返回实际用于授权隔离的发布范围键 |
data.summary.grantedPageCount | 目标角色在当前应用范围内已授权页面数量 |
data.summary.grantedActionCount | 目标角色在当前应用范围内已完整授权动作数量 |
data.list | 授权页使用的页面与动作状态列表 |
data.tree | 当前已发布应用菜单运行树,供 PCWEB 授权页展示完整结构 |
data.defaultPage | 当前角色在当前应用范围下配置的应用端默认首页;必须属于已授权页面,无有效配置时为空 |
data.manifestDefaultPage | 当前 app_menu 清单声明的默认页,仅供配置时参考,不等同于角色已配置默认页 |
curl 示例
bash
curl --location --request POST 'http://127.0.0.1:8100/sys_base/platform/manifest/getAppMenuAuthorityStatus' \
--header 'Content-Type: application/json' \
--header 'x-token: <token>' \
--header 'app-id: <app-id>' \
--header 'addons-type: take_away' \
--data-raw '{
"authorityId": 20,
"addonsType": "take_away",
"accessMode": "role",
"appScope": {
"scopeMode": "app_uuids",
"appUuids": ["APP_UUID_001"]
}
}'