Model/backend/app/local/router.py
2023-07-17 17:01:07 +01:00

40 lines
1.2 KiB
Python

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("/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)}