Files
DashBoard/openspec/changes/archive/2026-01-28-admin-auth/tasks.md
beabigegg 468aa65adf test: 新增 admin-auth 完整測試套件
Unit Tests (30 tests):
- auth_service: LDAP 認證、管理員檢查
- page_registry: 頁面狀態管理、並發安全
- permissions: 權限檢查函數、裝飾器

Integration Tests (17 tests):
- 登入/登出路由
- 權限中介層
- Admin API
- Context Processor

E2E Tests (10 tests):
- 完整登入登出流程
- 頁面存取控制
- 頁面管理流程
- Portal 動態 tabs
- Session 持久性
- 安全性場景

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:00:10 +08:00

3.7 KiB
Raw Blame History

Admin Auth 實作任務

後端任務

Task 1: 新增認證服務

  • 建立 src/mes_dashboard/services/auth_service.py
  • 實作 authenticate(username, password, domain) 函數
  • 實作 is_admin(user) 函數
  • 新增 LDAP API 錯誤處理timeout、連線失敗

Task 2: 新增頁面狀態管理服務

  • 建立 src/mes_dashboard/services/page_registry.py
  • 實作 get_page_status(route) 函數
  • 實作 set_page_status(route, status, name) 函數
  • 實作 get_all_pages() 函數
  • 建立 data/page_status.json 初始設定檔(現有頁面設為 released

Task 3: 新增權限檢查模組

  • 建立 src/mes_dashboard/core/permissions.py
  • 實作 is_admin_logged_in() 函數
  • 實作 get_current_admin() 函數
  • 實作 @admin_required 裝飾器

Task 4: 新增認證路由

  • 建立 src/mes_dashboard/routes/auth_routes.py
  • 實作 GET /admin/login 登入頁面
  • 實作 POST /admin/login 登入處理
  • 實作 GET /admin/logout 登出
  • routes/__init__.py 註冊 auth_bp

Task 5: 新增管理員路由

  • 建立 src/mes_dashboard/routes/admin_routes.py
  • 實作 GET /admin/pages 頁面管理介面
  • 實作 GET /admin/api/pages 取得所有頁面
  • 實作 PUT /admin/api/pages/<route> 更新頁面狀態
  • routes/__init__.py 註冊 admin_bp

Task 6: 修改 app.py

  • 新增 Flask session 設定SECRET_KEY
  • 新增 before_request 權限檢查中介層
  • 新增 context_processor 注入 is_adminadmin_usercan_view_page
  • 註冊 auth_bp 和 admin_bp

Task 7: 更新設定

  • config/settings.py 新增 LDAP_API_URL 設定
  • config/settings.py 新增 ADMIN_EMAILS 設定
  • config/settings.py 新增 SECRET_KEY 設定
  • requirements.txt 新增 requests 依賴

前端任務

Task 8: 建立登入頁面

  • 建立 templates/login.html
  • 實作帳號/密碼輸入表單
  • 實作錯誤訊息顯示
  • 套用現有樣式(與 portal.html 一致)

Task 9: 建立頁面管理介面

  • 建立 templates/admin/pages.html
  • 實作頁面列表表格(路由、名稱、狀態)
  • 實作狀態切換功能(點擊切換 released/dev
  • 實作即時儲存API 呼叫)
  • 實作 Toast 通知

Task 10: 建立 403 頁面

  • 建立 templates/403.html
  • 顯示「頁面開發中」訊息
  • 提供返回首頁連結

Task 11: 修改導航列

  • 在 portal.html 右上角加入管理員登入/登出連結
  • 管理員登入後顯示名稱和「頁面管理」連結
  • Dev 頁面 tabs 對非管理員隱藏(使用 can_view_page 條件渲染)

測試任務

Task 12: 單元測試

  • auth_service 測試LDAP 認證、管理員檢查)
  • page_registry 測試(頁面狀態讀寫、並發存取)
  • permissions 測試(權限檢查、裝飾器)

Task 13: 整合測試

  • 登入/登出路由測試
  • 權限中介層測試released/dev 頁面存取)
  • Admin API 測試(頁面管理)
  • Context Processor 測試

Task 14: E2E 測試

  • 完整登入登出流程
  • 頁面存取控制流程
  • 頁面管理流程
  • Portal 動態 tabs 顯示
  • Session 持久性
  • 安全性場景測試

部署任務

Task 15: 環境設定

  • 建立初始 page_status.json現有頁面設為 released
  • 設定生產環境 SECRET_KEY 環境變數(部署時處理)
  • 確認 LDAP API 連線正常(手動測試通過)