"""DCAuth v2 客户端协议入口。 客户端(DCAuth.exe / dcauth)把 authorize 路径硬编码为 ``POST {apiBase}/api/dcauth/authorize``,因此这里的路径不能改。 """ from __future__ import annotations from fastapi import APIRouter, Depends, Header, Query from sqlalchemy.orm import Session from ..database import get_db from ..schemas import DeviceAuthorizeRequest from ..services.dc_auth_service import ( authorize_device, get_challenge_status, ) router = APIRouter(prefix="/api/dcauth", tags=["设备认证"]) @router.post("/authorize") def authorize( payload: DeviceAuthorizeRequest, db: Session = Depends(get_db), ): result = authorize_device(db, payload.model_dump(by_alias=True)) return {"success": True, **result} @router.get("/challenge/{challenge_id}/status") def challenge_status( challenge_id: str, poll_token: str | None = Query(None, alias="pollToken"), header_poll_token: str | None = Header(None, alias="X-Poll-Token"), db: Session = Depends(get_db), ): token = header_poll_token or poll_token or "" return get_challenge_status(db, challenge_id, token)