Files
DashBoard/openspec/changes/archive/2026-01-28-admin-auth/tasks.md
beabigegg b5d63fb87d feat: 管理員認證系統與部署配置優化
Admin Authentication:
- 新增 LDAP 認證服務整合公司 AD API
- 新增頁面狀態管理 (released/dev)
- 非管理員無法存取 dev 狀態頁面
- Portal 動態顯示/隱藏 tabs 基於權限

Deployment Configuration:
- 更新 .env.example 包含所有環境變數
- start_server.sh 自動載入 .env 檔案
- 新增 deploy.sh 部署腳本

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

3.1 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-14: 單元測試與整合測試

  • 待後續補充

部署任務

Task 15: 環境設定

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