|
9 | 9 | /** |
10 | 10 | * 管理员基础设施(非业务)辅助接口。 |
11 | 11 | * |
12 | | - * 目前只有一个:/api/admin/pgadmin-check —— 专门给 Caddy `forward_auth` 调用, |
13 | | - * 用来判断当前请求是否是 admin。通过就 200,否则 sa-token 自动抛 NotLogin / |
14 | | - * NotPermission 异常,全局异常处理器转成 401 / 403,Caddy 据此拒绝代理到 pgAdmin。 |
| 12 | + * 设计初衷:给 Caddy `forward_auth` 当鉴权目标,用最小代价把"这个请求是不是 |
| 13 | + * admin"这个判断委托给后端 sa-token。所有需要 admin-only 访问的管理工具 |
| 14 | + * (pgAdmin、未来的 Umami admin 面板等)共用同一个端点,不再一个工具一个 |
| 15 | + * controller——凭据和角色都一样,复用即可。 |
15 | 16 | * |
16 | 17 | * 设计要点: |
17 | 18 | * - sa-token 默认从 header / cookie 两边读 token(sa-token.is-read-cookie=true 默认开) |
18 | 19 | * 配合前端在登录时把 satoken 同步写一份到 .involutionhell.com 域名 cookie, |
19 | 20 | * 浏览器直接访问 api 子域时也能带上,forward_auth 校验链才能成立 |
20 | 21 | * - 响应体故意空壳,Caddy 只看状态码不看 body;保持最小负载 |
21 | | - * - 单独放在 admin/controller 包下而不是塞进 events/controller:这是 |
22 | | - * "基础设施级"鉴权桩,不属于任何业务域,放一起语义会误导 |
| 22 | + * - superadmin 的 roles 集合也包含 "admin"(由 sa-token 角色体系保证), |
| 23 | + * 所以超管也能直接过,不用单独处理 |
| 24 | + * - Infisical **不**走这个端点——它自己有完整的 GitHub OAuth + 内部 RBAC + 审计, |
| 25 | + * 面向所有协作者(非 admin 也能登录,权限在 Infisical 内部按 project 细分)。 |
| 26 | + * Caddy 对 secrets.involutionhell.com 是直通反代,没有 forward_auth。 |
23 | 27 | */ |
24 | 28 | @RestController |
25 | 29 | @RequestMapping("/api/admin") |
26 | 30 | public class AdminInfraController { |
27 | 31 |
|
28 | 32 | /** |
29 | | - * Caddy 的 forward_auth 目标。只要通过 @SaCheckRole("admin") 就返回 200。 |
| 33 | + * Caddy forward_auth 目标。通过 @SaCheckRole("admin") 就 200,否则 sa-token 抛 |
| 34 | + * NotLogin / NotPermission 异常,全局异常处理器转成 401 / 403,Caddy 据此拒绝代理。 |
30 | 35 | * |
31 | | - * superadmin 的 roles 集合也包含 "admin"(由 sa-token 角色体系保证), |
32 | | - * 所以超管也能直接过,不用单独处理。 |
| 36 | + * 泛化自原来的 /pgadmin-check:现在 pgAdmin + Umami(以及未来的 admin-only 管理面板) |
| 37 | + * 都指向这一个端点。 |
| 38 | + */ |
| 39 | + @GetMapping("/devtool-check") |
| 40 | + @SaCheckRole("admin") |
| 41 | + public ApiResponse<Void> devtoolCheck() { |
| 42 | + return ApiResponse.okMessage("authorized"); |
| 43 | + } |
| 44 | + |
| 45 | + /** |
| 46 | + * 向后兼容:保留原 /pgadmin-check 路径,Caddyfile 里暂时还指着它,迁移完成后删除。 |
| 47 | + * 两个方法都走同一 @SaCheckRole 语义,不会分叉行为。 |
33 | 48 | */ |
34 | 49 | @GetMapping("/pgadmin-check") |
35 | 50 | @SaCheckRole("admin") |
|
0 commit comments