Access Control
Outlook 登入與部門權限
本頁定義 HS Project Flow 的登入、使用者審核、部門分流與唯讀模式。目標是讓操作者來源可追蹤,同時保留可插拔開關,不在尚未啟用權限時破壞既有流程。
環境開關
OUTLOOK_AUTH_REQUIRED=false
PERMISSION_REQUIRED=false
OUTLOOK_AUTH_REQUIRED=true:進入系統前必須登入 Outlook / Microsoft 帳號。PERMISSION_REQUIRED=true:啟用部門操作限制;使用者只能操作自己部門頁面。PERMISSION_REQUIRED=false:只記錄登入者與填寫人,不限制既有操作。
使用者生命週期
- 使用者點選左側登入按鈕,透過 Outlook OAuth 登入。
- API 取得使用者顯示名稱與 Email 後,寫入
app_users。 - 如果系統尚無已核准 Admin,第一位登入者會自動成為
admin、approved,並預設分配到工程部。 - 後續第一次登入者會成為
member、pending、未啟用。 - Admin 進入 系統管理 > 使用者管理,分配部門、角色與審核狀態。
- 使用者被核准後,若啟用權限模式,即可操作自己部門頁面;其他部門頁面只可瀏覽。
部門頁面對應
| 部門代碼 | 部門 | 可操作頁面 |
|---|---|---|
sales |
業務部 | 開案、規格書 |
engineering |
工程部 | 產品管理、建立 BOM、匯入 BOM、查詢 BOM |
procurement |
採購部 | 待採購清單、匯入採購單、叫貨追蹤、到貨確認、採購明細、廠商品項對照 |
warehouse |
倉庫 | 倉庫待收貨、已入庫、待出庫 |
finance |
財務部 | 報表查詢 |
資料表
使用者資料以 app_users 為主,部門資料以 departments 為主。
display_name:Outlook 顯示名稱。email:Outlook / Microsoft Email,唯一值。department_id:對應departments。role_code:admin或member。approval_status:pending、approved或disabled。is_active:是否允許操作。
API
GET /api/auth/outlook/me
GET /api/admin/users
PUT /api/admin/users/{id}
/api/auth/outlook/me 會同時回傳登入狀態與權限欄位,例如 departmentCode、roleCode、approvalStatus、isAdmin 與 canOperate。