mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
40 lines
1.2 KiB
Python
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)}
|