portal-auth P3(#24 #25):Portal UI+/portal/data/* server-side enforce(不 merge,待總管審) #52

Merged
Leo merged 5 commits from portal-auth-p3-portal-ui into main 2026-07-14 07:19:02 +00:00

5 Commits

Author SHA1 Message Date
uncle6me-web ef0eb08603 portal-auth P3 收尾:tasks.md 六項+P1 順延項勾掉、wiki status 更新(含 47/47 e2e 證據)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:22:23 +08:00
uncle6me-web 35a769fc88 portal-auth P3 測試:21 項(HTML 零租戶字串/enforce 繞不過/越庫 404/graph 粗閘/workflows 唯讀)
- portal-data.test.ts:/portal HTML 殼機械斷言(無 'leo'/X-Arcrun-API-Key//kbdb//Mira);
  search 注入證明(caller 帶 library=hr&owner_id=evil 被靜默覆蓋);entries/:id 越庫/
  跨租戶/不存在同一句 404+NULL→general;graph 403 不打 plugin/放行轉發/disabled
  來源排除;workflows 非 admin 403、admin 唯讀無 webhook_url、workflowsVisible 單元
- portal-auth.test.ts session 測試補 P3 能力欄位(graph_allowed/workflows_visible)
- wrangler.test.toml 補 ANALYTICS_KV mock+KBDB_GRAPH_URL 假 host(絕不外連)
- cypher 154/155(唯一失敗=executor 不存在零件 pre-existing,git stash 複驗);
  kbdb 20/20;兩包 tsc exit 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:10:19 +08:00
uncle6me-web a3f5c77332 portal-auth P3:/portal/data/* server-side enforce+/portal 單檔 HTML 殼
- portal-data.ts(安全核心):search(server 注入 owner_id+library,caller 的
  owner_id/library 參數一律被覆蓋);entries/:id 逐筆驗租戶+庫(越庫/不存在同一句
  404 不洩存在性);graph D-4 粗閘(無權 403,SDD 明定例外);workflows D-8
  (admin/all/off,唯讀+最近執行,無 trigger、無 webhook_url)
- portal-ui.ts:獨立 HTML 殼(不動 console;樣式複製 console 設計語言子集)——
  登入/搜尋(三模式+source 溯源+卡片詳頁)/設定(改密碼/看權限/主題)/工作流
  (admin);前端零租戶字串、零 X-Arcrun-API-Key,只持 portal session token
- index.ts 掛載兩個新 router;tsc exit 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:05:23 +08:00
uncle6me-web 5668d48d37 portal-auth P3 前置:graph 粗閘 helpers(D-4)+session 能力欄位+kbdb-proxy 透傳 library(P1 順延)
- portal.ts:export 共用 helpers(requirePortalUser/parseLibraries/kbdbFetch/run…)
  +graphSourceLibraries/hasGraphAccess/workflowsVisible;/portal/session 補
  graph_allowed、workflows_visible(顯示提示,真閘在 /portal/data/* 路由層)
- portal_library seed 加 graph_source slot;ensurePortalTemplates 冪等補舊 template
  缺的 slots(updateRecord 對 template 外 slot 會 reject,不補就寫不進標記)
- admin libraries PATCH 收 graph_source(boolean);toPublicLibrary 回 graph_source
- kbdb-proxy /kbdb/search 與 /kbdb/entries 白名單加 library(tasks.md P1 順延一行)
- PORTAL_SHOW_WORKFLOWS var(D-8,預設 admin)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:59:41 +08:00
uncle6me-web d4611950c0 wiki: 補記 #47-#51 五件(rebrand/profile/portal-auth SDD/P1/P2)——接關斷層補齊
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:28:15 +08:00