portal-auth P2(#24 #25):portal_user 模型+認證 API(不 merge,待總管審) #51

Merged
Leo merged 1 commits from portal-auth-p2-users-auth into main 2026-07-14 04:19:54 +00:00

1 Commits

Author SHA1 Message Date
uncle6me-web dd65b06a11 portal-auth P2(#24 #25):portal_user 模型+認證 API(不 merge,待總管審)
- lib/portal-auth.ts:PBKDF2-SHA256 600k(WebCrypto deriveBits)、pbkdf2-sha256$… 格式、
  常數時間比對(UI session 登入,console-auth 同類先例,非 workflow credential 原語)
- lib/portal-seeds.ts + init-seed:portal_user / portal_library template 冪等種入(零新表)
- routes/portal.ts:login/logout/session/me-password/bootstrap(console owner 閘)/
  admin users CRUD + reset-password / 庫目錄 CRUD;帳號資料全寫 {tenant}::portal 子 namespace
  (D-2)+ email head entry O(1) 查找(§2.3);session KV 只存 record_id、每請求回讀 record
  → 停用即時生效;絕不回租戶字串;登入節流 5 次/15 分(KV TTL)
- [vars] PORTAL_SESSION_TTL(預設 604800)+ types.ts
- 順修 kbdb record-crud updateRecord grow-slot 漏 owner_id(design §2.2)+回歸測試

驗證:kbdb 20/20、cypher 133/134(1 失敗 stash 複驗=pre-existing)、雙包 tsc 0;
本機雙 worker 端到端 33/33(含搜尋隔離實測:租戶 ns 搜 email/雜湊 0 筆、對照組
leo::portal 搜得到;明碼落地抽查 0 筆)。console-auth 既有行為未動;demo 8787/8788 未碰。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:10:03 +08:00