From cdeb29ccf24f976f4b0469d57fbee303e64f4b3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD?= <3401797899@qq.com> Date: Sun, 26 Jul 2026 20:19:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(database):=20=E8=A1=A5=E5=9B=9E=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=BA=93=E7=9A=84=E3=80=8C=E6=8E=88=E6=9D=83=E3=80=8D?= =?UTF-8?q?tab=20=E4=B8=8E=20/me=20=E7=9A=84=E6=98=BE=E7=A4=BA=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移时整个授权 tab 连同四个端点一起漏掉了 —— 后端一直可用,前端零调用: GET/PUT/DELETE /nodes/:id/grants PUT /projects/:id/independent-permission 权限编辑是这个后台的核心用途,而它此前在界面上完全不可达。 tab 组装也修正为与旧 libraryBrowser 一致:概览恒有、文件仅 PROJECT、 授权仅 MANAGE。注意文件夹也有授权 tab —— 它虽是透明组织节点,授权仍 挂在节点上(ADR-0021);此前文件夹一个 tab 都没有。 GrantsPanel 的语义按契约 8.1:创建者授权不给收回入口;MANAGE 仅创建者 可授,前端不拦,后端 fail closed 的报错原样呈现;GROUP 主体走 /groups/search 下拉选,不手敲 id。 /database/api/me 加 displayName 与 avatarUrl:侧栏此前显示原始 userId。 旧页面是服务端渲染,handler 里查 Prisma 就有名字;页面不再服务端渲染后 (ADR-0029),模板闭包过的数据也是被迁移的契约的一部分,不是旧实现的 无关细节。 概览面板同时补回丢失的「类型」「更新时间」两行、导出 target 下拉、 节点标题旁的角色 tag,以及整块缺失的独立权限开关。 --- hub/filelib-web/src/lib/GrantsPanel.svelte | 191 ++++++++++++++++++ .../src/lib/NodeDetailPanel.svelte | 83 +++++--- hub/filelib-web/src/lib/OverviewPanel.svelte | 82 +++++--- hub/src/database/routes/filelibRoutes.ts | 14 +- 4 files changed, 312 insertions(+), 58 deletions(-) create mode 100644 hub/filelib-web/src/lib/GrantsPanel.svelte diff --git a/hub/filelib-web/src/lib/GrantsPanel.svelte b/hub/filelib-web/src/lib/GrantsPanel.svelte new file mode 100644 index 0000000..3199707 --- /dev/null +++ b/hub/filelib-web/src/lib/GrantsPanel.svelte @@ -0,0 +1,191 @@ + + +
| 主体 | 级别 | |
|---|---|---|
| 暂无显式授权 | ||
|
+
+ |
+ {g.role} | ++ + {#if !g.isCreatorGrant && canManage} + + {/if} + | +