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>
3.1 KiB
3.1 KiB
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_admin、admin_user和can_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 連線正常(手動測試通過)