Spaces:
Runtime error
Runtime error
import uuid | |
from fastapi import Depends | |
from fastapi_users import FastAPIUsers | |
from fastapi_users.authentication import ( | |
AuthenticationBackend, | |
BearerTransport, | |
JWTStrategy, | |
) | |
from fastapi_users.manager import BaseUserManager, UUIDIDMixin | |
from fastapi_users_db_sqlalchemy import SQLAlchemyUserDatabase | |
from sqlalchemy.ext.asyncio import AsyncSession | |
from app.core.config import settings | |
from app.deps.db import get_async_session | |
from app.models.user import OAuthAccount, User as UserModel | |
bearer_transport = BearerTransport(tokenUrl="auth/jwt/login") | |
def get_jwt_strategy() -> JWTStrategy: | |
return JWTStrategy( | |
secret=settings.SECRET_KEY, | |
lifetime_seconds=settings.ACCESS_TOKEN_EXPIRE_MINUTES * 60, | |
) | |
jwt_authentication = AuthenticationBackend( | |
name="jwt", | |
transport=bearer_transport, | |
get_strategy=get_jwt_strategy, | |
) | |
class UserManager(UUIDIDMixin, BaseUserManager[UserModel, uuid.UUID]): | |
reset_password_token_secret = settings.SECRET_KEY | |
verification_token_secret = settings.SECRET_KEY | |
def get_user_db(session: AsyncSession = Depends(get_async_session)): | |
yield SQLAlchemyUserDatabase(session, UserModel, OAuthAccount) | |
def get_user_manager(user_db=Depends(get_user_db)): | |
yield UserManager(user_db) | |
fastapi_users = FastAPIUsers(get_user_manager, [jwt_authentication]) | |
current_user = fastapi_users.current_user(active=True) | |
current_superuser = fastapi_users.current_user(active=True, superuser=True) | |