from app.core.config import Settings from app.lib.jwt.blacklist import InMemoryTokenBlacklist from app.lib.jwt.jwt import Jwt, JwtSceneConfig class JwtFactory: def __init__(self, settings: Settings, blacklist: InMemoryTokenBlacklist) -> None: self.settings = settings self.blacklist = blacklist def get(self, scene: str = "default") -> Jwt: if scene == "admin": return Jwt( JwtSceneConfig( secret=self.settings.admin_jwt_secret, issuer=f"{self.settings.app_name}_admin", ttl=self.settings.admin_jwt_ttl, refresh_ttl=self.settings.admin_jwt_refresh_ttl, blacklist_ttl=self.settings.jwt_blacklist_ttl, ), self.blacklist, ) scene_name = "default" if scene == "default" else scene return Jwt( JwtSceneConfig( secret=self.settings.api_jwt_secret, issuer=f"{self.settings.app_name}_{scene_name}", ttl=self.settings.api_jwt_ttl, refresh_ttl=self.settings.api_jwt_refresh_ttl, blacklist_ttl=self.settings.jwt_blacklist_ttl, ), self.blacklist, )