29 lines
1.0 KiB
Python
29 lines
1.0 KiB
Python
"""JWT token service using Flask-JWT-Extended."""
|
|
|
|
from typing import Any
|
|
|
|
from flask_jwt_extended import create_access_token, create_refresh_token
|
|
|
|
|
|
class TokenService:
|
|
"""Service for handling JWT tokens using Flask-JWT-Extended."""
|
|
|
|
def generate_access_token(self, user_data: dict[str, Any]) -> str:
|
|
"""Generate an access token for the user."""
|
|
return create_access_token(
|
|
identity=user_data["id"],
|
|
additional_claims={
|
|
"email": user_data["email"],
|
|
"name": user_data["name"],
|
|
"picture": user_data.get("picture"),
|
|
"role": user_data.get("role"),
|
|
"is_active": user_data.get("is_active"),
|
|
"provider": user_data.get("provider"),
|
|
"providers": user_data.get("providers", []),
|
|
},
|
|
)
|
|
|
|
def generate_refresh_token(self, user_data: dict[str, Any]) -> str:
|
|
"""Generate a refresh token for the user."""
|
|
return create_refresh_token(identity=user_data["id"])
|