orgstate / legacy /orgstate_engine /auth_fastapi.py
Legal-i's picture
Initial OrgState deploy via Stage 150 free-tier stack
d2d1903 verified
try:
from fastapi import Header, HTTPException
except Exception:
Header = None
HTTPException = Exception
from api_key_auth import verify_api_key, require_permission_principal
def extract_bearer(authorization):
if not authorization or not authorization.startswith('Bearer '): return None
return authorization.replace('Bearer ', '', 1).strip()
def require_permission(permission):
def dependency(authorization: str = Header(None)):
raw = extract_bearer(authorization)
if not raw: raise HTTPException(status_code=401, detail='Missing bearer token')
verified = verify_api_key(raw)
if not verified.get('ok'): raise HTTPException(status_code=401, detail=verified.get('error'))
principal = verified['principal']; check = require_permission_principal(principal, permission)
if not check.get('ok'): raise HTTPException(status_code=403, detail=check.get('error'))
return principal
return dependency