from fastapi import APIRouter, HTTPException, status from jose import jwt, jwe import json import datetime from app.config import get_settings from app.dependencies import get_derived_encryption_key router = APIRouter( prefix="/local", tags=["local"], ) def create_dummy_token(secret: str) -> str: """ Create a JWE token using NextAuth.js encryption method Arguments: sub -- The subject or identifier for who the token is for (usually a user id) secret -- The secret key to encrypt the token. Should be the same as the key used in NextAuth.js exp -- Optional expiry time for the token. If not provided, token does not expire Returns: A string containing the JWE token """ claims = { "dbId": "known_id", } token = jwe.encrypt(json.dumps(claims), get_derived_encryption_key(secret), algorithm="dir", encryption="A256GCM") return token @router.get("/") async def dummy_token(): return {"hello": "world"} @router.get("/dummy-token") async def dummy_token(): settings = get_settings() if settings.ENVIRONMENT != "local": raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Dummy token can only be generated in local environment") return {"dummy_token": create_dummy_token(settings.SECRET_KEY)}