acra-api / auth.py
Nottybro's picture
fix: auth PGRST116 — replace .single() with .execute() + check data
301cd94 verified
raw
history blame contribute delete
794 Bytes
from fastapi import HTTPException
from db import supabase
import hashlib
def _hash(key): return hashlib.sha256(key.encode()).hexdigest()
async def verify_api_key(api_key: str) -> dict:
if not api_key or not api_key.startswith("nacra-"):
raise HTTPException(401, "Invalid API key. Keys start with nacra-")
res = (supabase.table("users")
.select("*")
.eq("api_key_hash", _hash(api_key))
.eq("is_active", True)
.execute())
if not res.data:
raise HTTPException(401, "Invalid or inactive API key")
return res.data[0]
async def get_user(user_id: str) -> dict:
res = supabase.table("users").select("*").eq("id", user_id).execute()
if not res.data: raise HTTPException(404, "User not found")
return res.data[0]