Some checks failed
CD Pipeline / deploy (push) Failing after 59s
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml) - 部署模式: rsync Python 檔案至 188 → docker restart (volume mount) - Dockerfile/requirements 變動時自動重建 Docker image - 部署通知: Telegram (開始/成功/失敗) - 健康檢查: https://mo.wooo.work/health (最多 5 次重試) - 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
85 lines
2.2 KiB
Python
85 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
初始化管理員帳號腳本
|
||
|
||
用於建立系統的第一個管理員帳號。
|
||
執行方式:python init_admin.py
|
||
|
||
預設帳號:admin
|
||
預設密碼:Wooo@2026! (符合密碼複雜度要求)
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
|
||
# 確保專案根目錄在 sys.path
|
||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||
sys.path.insert(0, BASE_DIR)
|
||
|
||
from database.manager import DatabaseManager, get_session
|
||
from services.user_service import create_initial_admin
|
||
from database.user_models import User
|
||
|
||
|
||
def main():
|
||
print("=" * 60)
|
||
print(" WOOO TECH - 初始化管理員帳號")
|
||
print("=" * 60)
|
||
print()
|
||
|
||
# 初始化資料庫(確保資料表已建立)
|
||
print("1. 初始化資料庫...")
|
||
try:
|
||
db_manager = DatabaseManager()
|
||
print(" 資料庫連線成功")
|
||
except Exception as e:
|
||
print(f" 資料庫連線失敗: {e}")
|
||
sys.exit(1)
|
||
|
||
# 取得資料庫 session
|
||
db_session = get_session()
|
||
|
||
try:
|
||
# 檢查是否已有管理員
|
||
print()
|
||
print("2. 檢查現有管理員...")
|
||
existing_admin = db_session.query(User).filter(User.role == User.ROLE_ADMIN).first()
|
||
|
||
if existing_admin:
|
||
print(f" 已存在管理員帳號: {existing_admin.username}")
|
||
print()
|
||
print(" 如需重設密碼,請使用用戶管理介面或直接修改資料庫。")
|
||
print()
|
||
return
|
||
|
||
# 建立管理員
|
||
print()
|
||
print("3. 建立管理員帳號...")
|
||
success, message = create_initial_admin(db_session)
|
||
|
||
if success:
|
||
print(f" {message}")
|
||
print()
|
||
print("=" * 60)
|
||
print(" 管理員帳號建立成功!")
|
||
print("=" * 60)
|
||
print()
|
||
print(" 帳號: admin")
|
||
print(" 密碼: Wooo@2026!")
|
||
print()
|
||
print(" 請登入後立即修改密碼!")
|
||
print("=" * 60)
|
||
else:
|
||
print(f" {message}")
|
||
|
||
except Exception as e:
|
||
print(f" 發生錯誤: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
finally:
|
||
db_session.close()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main()
|