feat(members): split username/display_name, sync updates to authentik, add password reset API and refresh docs

This commit is contained in:
Chris
2026-03-30 22:15:41 +08:00
parent e1a6bbd844
commit ccb99683b8
22 changed files with 361 additions and 207 deletions

View File

@@ -1,29 +1,26 @@
# member.ose.tw 架構總覽
## 1) 核心模型
- 業務層`companies -> sites -> users`
- 功能層`systems -> modules`
- 權限核心`permission_groups`(群組整合權限與成員
## 核心模型
- 業務層:`companies -> sites -> users`
- 功能層:`systems -> modules`
- 權限`permission_groups`(群組中心
## 2) 權限規則(固定)
- `scope` 只允許:`site`
- `action` 只允許:`view``edit`
- `view``edit` 可同時勾選(多選)
- 畫面顯示格式:`公司/站台`
## 權限規則
- `scope_type` 固定 `site`
- `action` `view` / `edit`(可同時存在)
- 權限透過群組下發給會員,不走細粒度 direct permission 主流程
## 3) 關聯關係(皆為多對多)
- 群組 ⟷ 站台
- 群組 ⟷ 系統
- 群組 ⟷ 模組
- 群組 ⟷ 會員
## 後台安全線
- 所有 `/admin/*` 需 Bearer token
- 後端僅依 `ADMIN_REQUIRED_GROUPS` 判定可否進後台
- 不在群組就算有網址、有 Authentik 帳號也會 403
## 4) 管理頁責任
- 群組管理:群組基本資料 + 站台/系統/模組/會員 + action(view/edit)
- 系統編輯頁:基本資料 + 所屬群組列表 + 涉及會員列表
- 模組編輯頁:基本資料 + 所屬群組列表 + 涉及會員列表
- 公司頁:基本資料 + 站台列表
- 會員編輯頁:基本資料 + 所屬群組列表
## 會員資料與 Authentik 對齊
- `username`:登入帳號(可編輯,可同步)
- `display_name`:顯示名稱(可編輯,可同步到 Authentik `name`
- `authentik_sub`:由 Authentik UID 回寫
- `authentik_user_id`:保留 Authentik user id供更新/密碼重設
## 5) 本輪範圍
- 會員細粒度直接授權先暫停
- 最終規格書(正式對外版)延後到專案完成後再整理
## 密碼流程
- 目前:後台可觸發重設密碼(產生臨時密碼)
- SMTP 開通後:可再補「發送密碼設定/重設通知」自動化