Skip to content

保存应用菜单角色授权

POST/sys_base/platform/manifest/saveAppMenuAuthority
构建时间2026-06-26 20:10:33(Asia/Shanghai)来源项目中间件文档 / 中间件后端来源仓../cl-midserver-2026来源提交号69b951a07311e75887b57e0400d888f89dd72cac
查看文档来源信息
  • 来源目录:addons/sys_base/docs
  • 来源文件:接口文档/保存应用菜单角色授权.md

详细说明

按当前模块、当前应用范围已经正式发布的 app_menu 清单保存角色移动端/应用端菜单授权和应用端默认首页。保存结果写入独立表 sys_app_menu_authority_grants,不会写入 sys_authority_menus,不会修改角色 PCWEB 默认页;保存成功后会把当前角色已授权 app_menu 页面和动作中的 grantApis 一并编译进该角色运行态 Casbin。

该接口用于恢复中间件原有“角色配置应用菜单权限给移动端使用”的正式链路。应用菜单权限和系统菜单权限允许不同。

appScope 指向单个具体应用时,保存前会沿用应用菜单运行态的发布命中规则:先按应用 UUID 匹配,再按 AppID 匹配,再按应用模型 UUID 匹配,最后按当前模块全部应用匹配。若该应用实际命中了某个已发布范围,授权记录会写入实际发布范围的 appScopeKey,保证角色授权页和应用端运行态读取同一份授权结果。

接口信息

项目内容
请求方式POST
请求路径/sys_base/platform/manifest/saveAppMenuAuthority
来源文件接口文档/保存应用菜单角色授权.md

请求头

请求头示例值说明
Content-Typeapplication/json请求体格式。
x-token<token>登录令牌。
app-id<app-id>当前应用 ID。
addons-typetake_away当前模块标识。

入参

json
{
  "authorityId": 20,
  "addonsType": "take_away",
  "appScope": {
    "scopeMode": "app_uuids",
    "appUuids": ["APP_UUID_001"]
  },
  "pageCodes": ["take_away.app.home"],
  "menuFlags": [],
  "actionCodes": ["take_away.app.home.view"],
  "defaultPageCode": "take_away.app.home"
}

参数说明

参数类型必填说明
authorityIdnumber目标角色 ID,必须属于当前模块
addonsTypestring当前模块标识,必须与目标角色 addonsType 一致
appScope.scopeModestring应用菜单范围,支持 all_appsapp_model_uuidsapp_uuidsapp_ids
appScope.appModelUuidsstring[]条件必填scopeMode=app_model_uuids 时必填
appScope.appUuidsstring[]条件必填scopeMode=app_uuids 时必填
appScope.appIdsstring[]条件必填scopeMode=app_ids 时必填
pageCodesstring[]本次授权的应用页面编码,必须存在于当前范围已发布 app_menu.pages
menuFlagsstring[]本次授权的应用菜单标识,必须存在于当前范围已发布 app_menu.menuSeeds 或动作授权标识
actionCodesstring[]本次授权的应用动作编码,必须存在于当前范围已发布 app_menu.actions
defaultPageCodestring应用端默认首页页面编码;传入时必须属于本次保存后的应用页面授权

请求示例

当前文档未提供独立请求示例,请参考下方 curl 示例。

响应输出

json
{
  "code": 0,
  "data": {
    "summary": {
      "published": true,
      "addonsType": "take_away",
      "authorityId": 20,
      "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": 1,
      "actionCount": 1,
      "menuFlagCount": 2,
      "saveNote": "按当前模块、当前应用范围已发布 app_menu 清单保存移动端页面和动作授权;菜单授权结果独立于 PCWEB/system_menu,接口 grantApis 会同步进入角色运行态 Casbin。"
    },
    "selectedPageCodes": ["take_away.app.home"],
    "selectedMenuFlags": ["take_away.app.home", "take_away.app.home.view"],
    "selectedActionCodes": ["take_away.app.home.view"],
    "defaultPage": {
      "pageCode": "take_away.app.home",
      "routeName": "takeAwayAppHome",
      "menuFlag": "take_away.app.home"
    },
    "defaultPageChanged": true,
    "defaultPageReason": "explicit_selected_page"
  },
  "msg": "success"
}

字段说明

字段说明
data.summary.published当前模块、当前应用范围是否已有成功发布的 app_menu
data.summary.appScopeKey后端归一化后的应用范围键;单个具体应用命中其他已发布范围时,返回实际保存授权的发布范围键
data.summary.pageCount本次确认保存的页面数量
data.summary.actionCount本次确认保存的动作数量
data.summary.menuFlagCount本次确认保存的菜单标识数量
data.selectedPageCodes后端确认有效的页面编码
data.selectedMenuFlags后端确认有效的菜单标识
data.selectedActionCodes后端确认有效的动作编码
data.defaultPage保存后解析出的应用端默认首页;无有效默认页时为空
data.defaultPageChanged本次是否调整了当前角色、当前应用范围的应用端默认首页
data.defaultPageReason默认首页处理原因,例如 explicit_selected_pageretained_selected_pagecleared_ungranted_page

curl 示例

bash
curl --location --request POST 'http://127.0.0.1:8100/sys_base/platform/manifest/saveAppMenuAuthority' \
  --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",
    "appScope": {
      "scopeMode": "app_uuids",
      "appUuids": ["APP_UUID_001"]
    },
    "pageCodes": ["take_away.app.home"],
    "actionCodes": ["take_away.app.home.view"],
    "defaultPageCode": "take_away.app.home"
  }'

CL 正式文档平台