Files
apilog/app/services/auth.py
2024-10-10 15:51:41 +02:00

25 lines
774 B
Python

from uuid import UUID
from creyPY.fastapi.db.session import get_db
from dotenv import load_dotenv
from fastapi import Depends, HTTPException, Request, Security
from fastapi.security import APIKeyQuery
from sqlalchemy.orm import Session
from app.models.auth import APIKey
load_dotenv()
async def verify(
request: Request,
api_key_query: str = Security(APIKeyQuery(name="api-key", auto_error=False)),
db: Session = Depends(get_db),
) -> str:
if api_key_query:
key_info = db.query(APIKey).filter_by(id=UUID(api_key_query)).one_or_none()
if key_info is None:
raise HTTPException(status_code=401, detail="Invalid API key.")
return f"API-KEY: {key_info.note}"
raise HTTPException(status_code=401, detail="No API key.")