zynthdev/loopyfeed
0
1import base642 3from fastapi import HTTPException4import os5import logging6import json7from jose import jwe8 9logger = logging.getLogger(__name__)10 11SECRET_JWK = base64.b64decode(os.environ["JWE_SECRET_KEY"])12REQUIRED_KEY = os.environ["API_REQUIRED_KEY"]13 14def decrypt_and_validate_token(token: str) -> dict:15 try:16 decrypted_bytes = jwe.decrypt(17 token,18 SECRET_JWK,19 )20 payload = json.loads(decrypted_bytes.decode("utf-8"))21 return payload22 except Exception as e:23 logger.exception("Token decryption/validation failed")24 raise HTTPException(status_code=403, detail="Forbidden")25 26def validate_key(key: str) -> None:27 try:28 if key != REQUIRED_KEY:29 raise HTTPException(status_code=401, detail="Unauthorized")30 except Exception as e:31 logger.exception("Token decryption/validation failed")32 raise HTTPException(status_code=403, detail="Forbidden")