访问控制
ACL 访问控制规则。
分页查询 ACL 列表
分页查询当前身份可见的网站 ACL 规则集。普通用户始终只返回自己的 ACL;管理员默认可查看全部用户的数据,并可通过 `uid` 限定所属用户。可按 ACL ID、名称、启用状态和任务状态筛选,结果按 ACL ID 倒序排列。响应中的 `data` 字段是序列化后的 ACL 规则 JSON 字符串,调用方需要在使用规则内容前再次解析。
创建 ACL
创建一组可供网站引用的 ACL 访问控制规则。接口会校验当前用户可创建的 ACL 数量、同一用户下的名称唯一性、默认动作以及每条匹配规则;规则数量上限由系统配置 `acl-max-limit` 决定。普通用户只能为自己创建 ACL;管理员可通过 `uid` 指定所属用户。创建成功后 ACL 会保存为独立配置并返回新 ACL ID。
批量更新 ACL
在一个事务中批量更新一个或多个 ACL。请求体必须是非空数组,每个元素通过 `id` 指定目标 ACL,并只提交需要修改的字段;普通用户只能更新自己的 ACL,管理员可更新其他用户的 ACL。任一元素校验失败都会回滚整批修改。修改已被网站引用且处于启用状态的 ACL 时会创建同步任务;禁用 ACL 时会创建删除任务,但正在被网站引用的 ACL 不允许直接禁用。
删除一个或多个 ACL
删除一个 ACL,或使用英文逗号分隔的 ID 一次删除多个 ACL。服务端会逐个确认 ID 格式、资源存在性、所属权限、启用状态和关联任务状态;所有目标 ACL 必须已禁用,并且关联任务为空或状态为 `done`。普通用户只能删除自己的 ACL,管理员可以删除其他用户的 ACL。整批操作共用一个事务,任一 ACL 校验失败都会回滚此前的删除。
获取 ACL 详情
根据 ACL ID 获取当前登录用户拥有的一条 ACL 完整配置。服务端同时使用路径中的 `acl_id` 和当前登录用户 ID 查询,因此目标 ACL 不属于当前账号时与不存在时返回相同错误;管理员身份也不会绕过这项所属用户限制。返回内容是 ACL 表中的原始配置,不包含列表接口联表提供的任务状态、用户名或格式化时间字段。
更新单个 ACL
根据路径中的 ACL ID 局部更新一条 ACL。请求体必须是 JSON 对象,只需提交要修改的字段;服务端会将路径 `acl_id` 作为真实目标 ID,即使请求体包含 `id` 也会被路径值覆盖。普通用户只能更新自己的 ACL,管理员可更新其他用户的 ACL。修改已被网站引用且处于启用状态的 ACL 时会创建同步任务;禁用 ACL 时会创建删除任务,但仍被网站引用的 ACL 不允许直接禁用。