From bce756b9aa51dfdfa2c2e6cdef4f88f660b80148 Mon Sep 17 00:00:00 2001 From: Parker Date: Mon, 26 Feb 2024 20:55:05 -0600 Subject: Overhaul: Flask -> FastAPI --- app/check_api_key.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 app/check_api_key.py (limited to 'app/check_api_key.py') diff --git a/app/check_api_key.py b/app/check_api_key.py new file mode 100644 index 0000000..d8b92f4 --- /dev/null +++ b/app/check_api_key.py @@ -0,0 +1,22 @@ +import fastapi +from fastapi import Security, HTTPException +from fastapi.security import APIKeyHeader +import sqlalchemy + +from db import engine + +""" +Make sure the provided API key is valid +""" +api_key_header = APIKeyHeader(name="X-API-Key") + +def check_api_key(api_key_header: str = Security(api_key_header)) -> str: + with engine.begin() as conn: + response = conn.execute(sqlalchemy.text("SELECT api_key FROM keys WHERE api_key = :api_key"), {'api_key': api_key_header}).fetchone() + if response: + return response[0] + else: + raise HTTPException( + status_code=fastapi.status.HTTP_401_UNAUTHORIZED, + detail="Invalid or missing API key" + ) -- cgit v1.2.3-70-g09d2