deploy-bot
Deploy from 9685d0e
28e1510
Raw
History Blame Contribute Delete
869 Bytes
"""Owner-token gate: uploads/writes require it; reads never do."""
import secrets
from fastapi import Header, HTTPException
from app.config import get_settings
async def require_owner(x_owner_token: str = Header(default="")) -> None:
expected = get_settings().owner_token
if not expected:
raise HTTPException(503, "Owner access is not configured on this server.")
if not secrets.compare_digest(x_owner_token, expected):
raise HTTPException(401, "Owner token required.")
def owner_token_valid(token: str) -> bool:
"""Body-carried owner check for endpoints that stay public but gate a
single capability (chat's web search). Header-gated routes use
`require_owner` instead."""
expected = get_settings().owner_token
if not expected or not token:
return False
return secrets.compare_digest(token, expected)