Initial FastAPI admin auth scaffold
This commit is contained in:
34
app/lib/jwt/factory.py
Normal file
34
app/lib/jwt/factory.py
Normal file
@@ -0,0 +1,34 @@
|
||||
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,
|
||||
)
|
||||
Reference in New Issue
Block a user