2026-06-08 09:01:55 +00:00
|
|
|
import os
|
|
|
|
|
import secrets
|
|
|
|
|
from fastapi import APIRouter, HTTPException
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
from logger import get_logger
|
|
|
|
|
|
|
|
|
|
logger = get_logger("app.auth")
|
|
|
|
|
router = APIRouter(tags=["Auth"])
|
|
|
|
|
|
|
|
|
|
# 定義請求本體格式
|
|
|
|
|
class GodModeRequest(BaseModel):
|
|
|
|
|
password: str
|
|
|
|
|
|
|
|
|
|
@router.post("/auth/god-mode", summary="驗證上帝模式進階密碼")
|
|
|
|
|
async def verify_god_mode(req: GodModeRequest):
|
2026-06-10 06:37:16 +00:00
|
|
|
# 從環境變數讀取正確密碼,預設為 "19760107@Serc0mm"
|
|
|
|
|
expected_password = os.getenv("GOD_MODE_SECRET", "19760107@Serc0mm")
|
2026-06-08 09:01:55 +00:00
|
|
|
|
|
|
|
|
# 使用 compare_digest 防禦計時攻擊
|
|
|
|
|
if secrets.compare_digest(req.password, expected_password):
|
|
|
|
|
logger.info("🔓 上帝模式解鎖成功!")
|
|
|
|
|
return {"status": "success"}
|
|
|
|
|
|
|
|
|
|
logger.warning("🔒 嘗試解鎖上帝模式失敗 (密碼錯誤)")
|
|
|
|
|
raise HTTPException(status_code=401, detail="Invalid authorization code")
|