fix: 完善 API Token 验收细节

This commit is contained in:
2026-05-23 03:09:40 +08:00
parent 4784ed36ca
commit 68e297b0ad
5 changed files with 31 additions and 11 deletions
+12 -6
View File
@@ -18,6 +18,16 @@ def _bad_expiration_error(exc: ValueError) -> HTTPException:
return HTTPException(status_code=400, detail="到期日期格式无效,请使用 YYYY-MM-DD 或 ISO 日期时间")
def _resolve_expires_at(payload: dict[str, Any]) -> str | None:
if bool(payload.get("permanent", False)):
return None
expires_at = str(payload.get("expires_at") or "").strip()
if not expires_at:
raise HTTPException(status_code=400, detail="请选择 Token 到期日期,或设置为永久有效")
return expires_at
@router.get("/api/tokens")
async def get_tokens(request: Request):
_require_login(request)
@@ -28,18 +38,14 @@ async def get_tokens(request: Request):
async def create_api_token(request: Request, payload: dict[str, Any] = Body(...)):
_require_login(request)
name = str(payload.get("name", "")).strip()
expires_at = payload.get("expires_at")
enabled = bool(payload.get("enabled", True))
permanent = bool(payload.get("permanent", False))
expires_in_days = payload.get("expires_in_days")
raw_expires_at = None if permanent else (str(expires_at).strip() if expires_at else None)
raw_expires_at = _resolve_expires_at(payload)
try:
raw_token, record = create_token(
name=name,
expires_at=raw_expires_at,
enabled=enabled,
expires_in_days=int(expires_in_days) if expires_in_days is not None else None,
)
except ValueError as exc:
raise _bad_expiration_error(exc) from exc
@@ -63,7 +69,7 @@ async def update_api_token(request: Request, payload: dict[str, Any] = Body(...)
token_id,
name=payload.get("name"),
enabled=payload.get("enabled"),
expires_at=None if payload.get("permanent") else payload.get("expires_at"),
expires_at=_resolve_expires_at(payload),
)
return {"success": True, "message": "API Token 已更新", "record": record}
except ValueError as exc: