跳转至

权限(PermissionController)

提供 KMS 知识管理模块「权限域」的能力:按资源 Id 查询当前用户对该资源拥有的操作权限位掩码。所有端点均返回统一 Resource 封装。

  • 接口类型:REST 资源(@RestController,类级与方法级 produces = MediaType.APPLICATION_JSON_VALUE
  • 基址${myapps.context-path.kms:}/api/kms
  • Tag:kms权限模块

公共说明

  • 鉴权(据源码 KmsMvcConfig + KmsSecurityFilterKmsMvcConfig 注册全局 Servlet 过滤器 KmsSecurityFilter(URL 模式 /*,context-path 为 / 时为 /kms/*)。本控制器路径 /api/kms/fileobjects/{fileObjectId}/permissions 不在 KmsSecurityFilter.isExcludeURI 的豁免名单内(豁免仅覆盖 /login.*/admin/domain.*/tray/service/authtimeservice/OfficeServer.*outsideshare/.*/preview、静态资源后缀、actuator/health 等),亦不匹配 S3 数据面前缀。过滤器调用 Security.getUserIdFromToken(request),取不到用户则返回 HTTP 401(无响应体)。因此所有端点均需 accessToken,可通过以下任一方式传递:query 参数 accessToken、query 参数 access_token(移动端)、请求头 accessToken、Cookie accessToken、请求头 Authorization: Bearer <token>。完整鉴权机制见 index.md「鉴权说明」。
  • 执行用户:控制器内 getUser()(继承自 AbstractBaseController)调用 Security.getUserIdFromToken(request) 还原当前用户 id,再经 Feign(UserAPI.getUserById)装载 KmsUseruserCode 参数
  • 响应结构:统一 Resource(见 ../index.md「统一响应结构」),字段为 errcode/errmsg/data/errors。KMS 的 ResourceAbstractBaseController 内部类,其构造器对 data 执行 ESAPI.encode(data) 做 XSS 编码,故 data 中的 HTML 特殊字符会被转义。
  • HTTP 状态码与错误码(据源码 AbstractBaseController 全局异常处理):成功 HTTP 200;InvalidRequestException(如 fileObjectId 为空)→ HTTP 400 / errcode=400;UnauthorizedException → HTTP 403 / errcode=403;ForbiddenException → HTTP 403 / errcode=403;ResourceNotFoundException → HTTP 404 / errcode=404;其他 Exception → HTTP 500 / errcode=500。
  • 权限位掩码:返回值 operations 为整数,按二进制位组合表示当前用户拥有的操作权限集合(跟随 kms_authorizationoperations 字段的按位与逻辑,与 GrantOperationCODE_* 常量按位或对应)。
  • 路径变量fileObjectId 为 KMS 内部主键(明文 id,文件/文件夹 Id),非 DES 加密密文

1. 根据资源 Id 获取当前用户对资源的权限

按资源 Id(文件/文件夹 Id)查询当前用户对该资源拥有的操作权限位掩码。fileObjectId 为空或全空白时抛 InvalidRequestException(HTTP 400)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/fileobjects/{fileObjectId}/permissions(完整:{kms-context}/api/kms/fileobjects/{fileObjectId}/permissions
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms权限模块

请求参数

参数名 位置 类型 必填 说明
fileObjectId path string 资源Id(文件/文件夹 Id),不可为空或空白

请求示例

GET /api/kms/fileobjects/__FILEOBJECTID__/permissions?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataMap<String, Object>,结构 { "fileObjectId": "<资源Id>", "operations": <int 位掩码> }

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "fileObjectId": "__FILEOBJECTID__", "operations": 7 },
  "errors": null
}

失败示例(参数为空)

{ "errcode": 400, "errmsg": "资源ID不能为空", "data": null, "errors": null }