from fastapi import Depends from fastapi_users import FastAPIUsers, UUIDIDMixin, BaseUserManager from fastapi_users.authentication import BearerTransport, AuthenticationBackend, JWTStrategy from fastapi_users_db_sqlalchemy import SQLAlchemyUserDatabase from sqlalchemy.ext.asyncio import AsyncSession from app.database import session from app.database.models import RbacUser import uuid from app.config import SECRET bearer_transport = BearerTransport(tokenUrl="autenticacao/login") def get_jwt_strategy() -> JWTStrategy: return JWTStrategy( secret="SECRET_KEY", lifetime_seconds=3600, ) auth_backend = AuthenticationBackend( name="jwt", transport=bearer_transport, get_strategy=get_jwt_strategy, ) async def get_user_db(session_get_user_db: AsyncSession = Depends(session.get_db)): yield SQLAlchemyUserDatabase(session_get_user_db, RbacUser) # class UserManager(UUIDIDMixin, BaseUserManager[RbacUser, uuid.UUID]): class UserManager(UUIDIDMixin, BaseUserManager[RbacUser, uuid.UUID]): reset_password_token_secret = SECRET verification_token_secret = SECRET async def get_user_manager(user_db: SQLAlchemyUserDatabase = Depends(get_user_db)): yield UserManager(user_db) fastapi_users = FastAPIUsers[RbacUser, uuid.UUID](get_user_manager, [auth_backend]) current_active_user = fastapi_users.current_user(active=True)