BBFbyOpus
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy import select
|
||||
|
||||
from app.core.database import async_session
|
||||
@@ -9,6 +10,12 @@ from app.api.deps import require_admin, AuthContext
|
||||
router = APIRouter(dependencies=[Depends(require_admin)])
|
||||
|
||||
|
||||
class KeyActionRequest(BaseModel):
|
||||
"""Тело запроса для операций с ключом (чтобы токен не летел в URL)."""
|
||||
|
||||
key: str
|
||||
|
||||
|
||||
@router.get("")
|
||||
async def list_keys():
|
||||
"""Список всех гостевых ключей."""
|
||||
@@ -49,12 +56,12 @@ async def create_key(name: str, is_admin: bool = False):
|
||||
}
|
||||
|
||||
|
||||
@router.delete("/{key}")
|
||||
async def revoke_key(key: str):
|
||||
"""Деактивировать (отозвать) гостевой ключ."""
|
||||
@router.post("/revoke")
|
||||
async def revoke_key(body: KeyActionRequest):
|
||||
"""Деактивировать (отозвать) гостевой ключ. Ключ передаётся в body, не в URL."""
|
||||
async with async_session() as session:
|
||||
result = await session.execute(
|
||||
select(ApiKeyModel).where(ApiKeyModel.key == key)
|
||||
select(ApiKeyModel).where(ApiKeyModel.key == body.key)
|
||||
)
|
||||
api_key = result.scalar_one_or_none()
|
||||
if not api_key:
|
||||
@@ -67,12 +74,12 @@ async def revoke_key(key: str):
|
||||
return {"status": "revoked", "name": api_key.name}
|
||||
|
||||
|
||||
@router.post("/{key}/activate")
|
||||
async def activate_key(key: str):
|
||||
"""Повторно активировать ключ."""
|
||||
@router.post("/activate")
|
||||
async def activate_key(body: KeyActionRequest):
|
||||
"""Повторно активировать ключ. Ключ передаётся в body, не в URL."""
|
||||
async with async_session() as session:
|
||||
result = await session.execute(
|
||||
select(ApiKeyModel).where(ApiKeyModel.key == key)
|
||||
select(ApiKeyModel).where(ApiKeyModel.key == body.key)
|
||||
)
|
||||
api_key = result.scalar_one_or_none()
|
||||
if not api_key:
|
||||
|
||||
Reference in New Issue
Block a user