nianjie/dialog/backend/admin.py

39 lines
1.1 KiB
Python

import json
from pathlib import Path
from typing import Optional
from werkzeug.security import generate_password_hash, check_password_hash
from .config import DATA_DIR
ADMIN_PATH = DATA_DIR / "admin.json"
DEFAULT_USERNAME = "cxf"
DEFAULT_PASSWORD = "NianJie1018"
def ensure_admin_file(username: str = DEFAULT_USERNAME, password: str = DEFAULT_PASSWORD) -> None:
"""Create admin file with hashed password if missing."""
if ADMIN_PATH.exists():
return
data = {
"username": username,
"password_hash": generate_password_hash(password),
}
ADMIN_PATH.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
def get_admin() -> Optional[dict]:
if not ADMIN_PATH.exists():
return None
try:
return json.loads(ADMIN_PATH.read_text(encoding="utf-8"))
except Exception:
return None
def verify_credentials(username: str, password: str) -> bool:
admin = get_admin()
if not admin:
return False
return username == admin.get("username") and check_password_hash(admin.get("password_hash", ""), password)