fix(specs): 文档 POST /assets/folder/{pk} 和 POST /assets/files/
由Directus/Directus #27700追踪的光谱漂移审计的一部分.
□ 范围
包装/规格/src/paths/assets/' 只文件GET/assets/{id}`. 在同一控制器上返回一个zip归档的两个POST路径根本没有谱面覆盖:将它们捆入一个PR是合理的,因为它们具有相同的响应形状和控制器.
□ 文档路径
`api/src/控制器/资产'
POST/assets/folder/:pk':将文件夹pk'内的每一份文件(重复地)归档为一拉链并排回。 无所求身. 答复是应用程序/zip',并附有Content-Disposition: abstress'标题,取出“文件夹-<文件夹名称>-.zip'的名称。POST/assets/files/':将一组任意的文件归档到一个拉链中,然后将其退回。 请求正文为QQ"ids":字符串 [] QX (UUIDs,分长 1;用"zod"验证,用"invalidPayloadError"验证为"形状不好". 答复是应用程序/zip',并附有Content-Disposition: abstruction'标题,以命名文件files-.zip'。
这两条路线都通过“检查资产”和“使用收集('Directus files')”来运行,两条路线都用呼叫者自己的“问责制”来构建“AssetsService”——访问基本文件由RBAC正常的“Directus files”读取权限管理(关于文件夹路径,“Directus folders”),而不是硬编码检查。 这只是一个文件漏洞,不是安全/RBAC错误。
□ 执行说明
增加一个新的路径文件,例如 " packages/ specs/src/ pathers/assets/folder.yaml " 和 " packages/ specs/src/ paths/assets/files.yaml " ,在 " openapi.yaml " 注册为 " /assets/folders/{pk}`和 " /assets/files " 。 两者均应使用 " 资产 " 标签。
POST/资产/文件/':设置x-收集:直接-文件',遵循为GET/assets/{id}'在直接/指令#27883中确定的操作级别覆盖模式。POST/资产/文件夹/{pk}:设置x-collection: directus-colders'。FoldersService.buildingTree ()'在根文件夹上拨打validate Access' id,如果Directus'文件夹:read'不见了,则投出ForbidenError'——这是路线上唯一的硬门。 这些文件本身通过Directus files'读取权限进行无声过滤(没有访问只是将文件从zip中省出,而不是阻塞请求),因此Directus folders'是打开大门的正确单集。
反应计划:应用/zip',类型:字符串',格式:二进制'(目前没有用于再利用的zip反应计划;最接近的先例是已经用于GET/assets/{id}>的text/plan':字符串'反应)。
用于`POST/assets/files/':记录控制器中的“ids”请求机体(“串、uid、min1”),以及“无效PayloadError”(400)对一个畸形机体的反应。
□ 核查
在包装/规格'中进行pnpm验证 ' ,确认其通过干净。 在Swagger查看器中核实这两个新的路径条目都出现在“Assets”标签下,并有正确的请求/答复文件.
内容来源: directus/directus