# from models import User, Permissao, Papel from app.database.models import RbacUser, RbacPermissao, RbacPapel, rbac_papel_permissoes, rbac_papeis_usuario from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select class RBAC: @staticmethod async def has_permission(user: RbacUser, permission_id: int, session: AsyncSession) -> bool: # Carregar permissões associadas aos papéis do usuário result = await session.execute( select(RbacPermissao) .join(rbac_papel_permissoes) .join(RbacPapel) .join(rbac_papeis_usuario) .where(rbac_papeis_usuario.c.user_uuid == user.id) .where(rbac_papel_permissoes.c.permissao_id == permission_id) ) permissoes = result.scalars().all() # Verificar se a permissão está presente return len(permissoes) > 0