跳转至

申请授权(ApplyAuthorizationController)

提供 KMS 知识管理模块「申请授权域」的能力:用户对指定资源发起权限申请、我的待办/已办分页、审批权限、获取审批人列表、获取我的申请列表。所有端点均返回统一 Resource 封装。

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

公共说明

  • 鉴权(据源码 KmsMvcConfig + KmsSecurityFilterKmsMvcConfig 注册全局 Servlet 过滤器 KmsSecurityFilter(URL 模式 /*,context-path 为 / 时为 /kms/*)。本控制器路径 /api/kms/resources/{resourceId}/applyAuthorizations/api/kms/applyAuthorizations* 均不在 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(类级 @ResponseStatus(HttpStatus.OK));InvalidRequestException → HTTP 400 / errcode=400;UnauthorizedException → HTTP 403 / errcode=403;ForbiddenException → HTTP 403 / errcode=403;ResourceNotFoundException → HTTP 404 / errcode=404;其他 Exception → HTTP 500 / errcode=500。
  • 分页参数默认值pageNo 默认 1linesPerPage 默认 10(据 @RequestParam defaultValue)。
  • 路径变量resourceId 为 KMS 内部主键(明文 id,文件/文件夹 Id),非 DES 加密密文

1. 创建申请授权

对指定资源(文件/文件夹)发起一次权限申请。服务端将当前用户写入 creator/creatorId/domainId,将路径 resourceId 写入申请对象的 resourceId,再调用 applyAuthorizationService.create 持久化。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/resources/{resourceId}/applyAuthorizations(完整:{kms-context}/api/kms/resources/{resourceId}/applyAuthorizations
  • 鉴权:是(需 accessToken,据源码)
  • Tag:申请授权

请求参数

参数名 位置 类型 必填 说明
resourceId path string 资源Id(文件/文件夹 Id)
body body object ApplyAuthorization 对象 JSON

请求体

{
  "operations": 1,
  "resourceType": "file",
  "reason": "申请下载该文件"
}

请求示例

POST /api/kms/resources/__RESOURCEID__/applyAuthorizations?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

{ "operations": 1, "reason": "申请下载该文件" }

响应

结构:统一 Resourcedata:创建后的 ApplyAuthorization 实体(IEntity)。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": { "id": "__APPLYID__", "resourceId": "__RESOURCEID__", "creatorId": "__USERID__" }, "errors": null }


2. 我的待办

分页查询当前用户作为审批人、状态为「待处理」(status=0)的权限申请列表。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/applyAuthorizations/pending(完整:{kms-context}/api/kms/applyAuthorizations/pending
  • 鉴权:是(需 accessToken,据源码)
  • Tag:申请授权

请求参数

参数名 位置 类型 必填 说明
pageNo query int 页码,默认 1
linesPerPage query int 每页条数,默认 10

请求示例

GET /api/kms/applyAuthorizations/pending?pageNo=1&linesPerPage=10&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<ApplyAuthorization>,当前用户待审批的申请分页数据。


3. 审批权限

审批当前用户待办中的权限申请(同意/驳回)。请求体为 ApprovalApplyAuthorizationDTO,由服务端 applyAuthorizationService.approve(getUser(), dto) 处理。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/applyAuthorizations/approval(完整:{kms-context}/api/kms/applyAuthorizations/approval
  • 鉴权:是(需 accessToken,据源码)
  • Tag:申请授权

请求参数

参数名 位置 类型 必填 说明
body body object ApprovalApplyAuthorizationDTO 对象 JSON

请求体

{
  "applyAuthorizationId": "__APPLYID__",
  "approved": true,
  "opinion": "同意"
}

请求示例

POST /api/kms/applyAuthorizations/approval?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json

{ "applyAuthorizationId": "__APPLYID__", "approved": true, "opinion": "同意" }

响应

结构:统一 Resourcedataboolean,固定为 true(审批逻辑由服务层完成,过程中抛出的异常由全局处理器映射)。


4. 我的已办

分页查询当前用户作为审批人、状态为「已处理」(status=1)的权限申请列表。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/applyAuthorizations/processed(完整:{kms-context}/api/kms/applyAuthorizations/processed
  • 鉴权:是(需 accessToken,据源码)
  • Tag:申请授权

请求参数

参数名 位置 类型 必填 说明
pageNo query int 页码,默认 1
linesPerPage query int 每页条数,默认 10

请求示例

GET /api/kms/applyAuthorizations/processed?pageNo=1&linesPerPage=10&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<ApplyAuthorization>,当前用户已审批的申请分页数据。


5. 获取审批人列表

按当前用户的企业域,列出该域下角色为「超级管理员」(RoleConstant.ID_SUPER)的用户列表,供申请人选择审批人。deptId 形参传空字符串(即不限部门)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/applyAuthorizations/approvers(完整:{kms-context}/api/kms/applyAuthorizations/approvers
  • 鉴权:是(需 accessToken,据源码)
  • Tag:申请授权

请求参数

无。

请求示例

GET /api/kms/applyAuthorizations/approvers?accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataList<KmsUser>,企业域下拥有超级管理员角色的用户列表。


6. 获取我的申请列表

按关键字(keyWord)分页查询当前用户作为申请人(creatorId = 当前用户)提交的权限申请列表。

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

请求参数

参数名 位置 类型 必填 说明
keyWord query string 关键字(required=false
pageNo query int 页码,默认 1
linesPerPage query int 每页条数,默认 10

请求示例

GET /api/kms/applyAuthorizations?keyWord=报告&pageNo=1&linesPerPage=10&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<ApplyAuthorization>,当前用户提交的申请分页数据。