申请授权(ApplyAuthorizationController)¶
提供 KMS 知识管理模块「申请授权域」的能力:用户对指定资源发起权限申请、我的待办/已办分页、审批权限、获取审批人列表、获取我的申请列表。所有端点均返回统一 Resource 封装。
- 接口类型:REST 资源(
@RestController,类级与方法级produces = MediaType.APPLICATION_JSON_VALUE) - 基址:
${myapps.context-path.kms:}/api/kms - Tag:申请授权
公共说明¶
- 鉴权(据源码
KmsMvcConfig+KmsSecurityFilter):KmsMvcConfig注册全局 Servlet 过滤器KmsSecurityFilter(URL 模式/*,context-path 为/时为/kms/*)。本控制器路径/api/kms/resources/{resourceId}/applyAuthorizations、/api/kms/applyAuthorizations*均不在KmsSecurityFilter.isExcludeURI的豁免名单内(豁免仅覆盖/login.*、/admin、/domain.*、/tray/service、/authtime、service/OfficeServer、.*outsideshare/.*/preview、静态资源后缀、actuator/health等),亦不匹配 S3 数据面前缀。过滤器调用Security.getUserIdFromToken(request),取不到用户则返回 HTTP401(无响应体)。因此所有端点均需 accessToken,可通过以下任一方式传递:query 参数accessToken、query 参数access_token(移动端)、请求头accessToken、CookieaccessToken、请求头Authorization: Bearer <token>。完整鉴权机制见 index.md「鉴权说明」。 - 执行用户:控制器内
getUser()(继承自AbstractBaseController)调用Security.getUserIdFromToken(request)还原当前用户 id,再经 Feign(UserAPI.getUserById)装载KmsUser。无userCode参数。 - 响应结构:统一
Resource(见 ../index.md「统一响应结构」),字段为errcode/errmsg/data/errors。KMS 的Resource为AbstractBaseController内部类,其构造器对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默认1,linesPerPage默认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 |
请求体¶
请求示例¶
POST /api/kms/resources/__RESOURCEID__/applyAuthorizations?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
{ "operations": 1, "reason": "申请下载该文件" }
响应¶
结构:统一 Resource。
data:创建后的 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 |
请求示例¶
响应¶
结构:统一 Resource。
data:DataPackage<ApplyAuthorization>,当前用户待审批的申请分页数据。
3. 审批权限¶
审批当前用户待办中的权限申请(同意/驳回)。请求体为 ApprovalApplyAuthorizationDTO,由服务端 applyAuthorizationService.approve(getUser(), dto) 处理。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/applyAuthorizations/approval(完整:{kms-context}/api/kms/applyAuthorizations/approval) - 鉴权:是(需 accessToken,据源码)
- Tag:申请授权
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| body | body | object | 是 | ApprovalApplyAuthorizationDTO 对象 JSON |
请求体¶
请求示例¶
POST /api/kms/applyAuthorizations/approval?accessToken=__TOKEN__ HTTP/1.1
Content-Type: application/json
{ "applyAuthorizationId": "__APPLYID__", "approved": true, "opinion": "同意" }
响应¶
结构:统一 Resource。
data:boolean,固定为 true(审批逻辑由服务层完成,过程中抛出的异常由全局处理器映射)。
4. 我的已办¶
分页查询当前用户作为审批人、状态为「已处理」(status=1)的权限申请列表。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/applyAuthorizations/processed(完整:{kms-context}/api/kms/applyAuthorizations/processed) - 鉴权:是(需 accessToken,据源码)
- Tag:申请授权
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| pageNo | query | int | 否 | 页码,默认 1 |
| linesPerPage | query | int | 否 | 每页条数,默认 10 |
请求示例¶
响应¶
结构:统一 Resource。
data:DataPackage<ApplyAuthorization>,当前用户已审批的申请分页数据。
5. 获取审批人列表¶
按当前用户的企业域,列出该域下角色为「超级管理员」(RoleConstant.ID_SUPER)的用户列表,供申请人选择审批人。deptId 形参传空字符串(即不限部门)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/applyAuthorizations/approvers(完整:{kms-context}/api/kms/applyAuthorizations/approvers) - 鉴权:是(需 accessToken,据源码)
- Tag:申请授权
请求参数¶
无。
请求示例¶
响应¶
结构:统一 Resource。
data:List<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 |
请求示例¶
响应¶
结构:统一 Resource。
data:DataPackage<ApplyAuthorization>,当前用户提交的申请分页数据。