Documento interno
Arquitetura Tecnica

RBAC & Permissoes

Perfis, papeis e controle de acesso por persona no sistema Romeo.

Versao
1.0
Atualizado
junho/2026
Status
rascunho
1

Visao geral

O Romeo implementa Role-Based Access Control (RBAC) para garantir que cada usuario acesse apenas os recursos apropriados. O sistema e multi-tenant, com isolamento por organizacao e permissoes granulares por papel.

Principio
Privilegio minimo: cada usuario tem apenas as permissoes necessarias para sua funcao. Toda acao sensivel e auditada.
2

Papeis do sistema

Organizacao (Imobiliaria)

PapelDescricaoEscopo
donoProprietario da organizacao, acesso totalfull
gestorGerente, ve toda a equipe e financeiroamplo
corretorVe apenas seus imoveis e clientesrestrito
secretariaSuporte administrativo, sem financeirorestrito
fotografoAcesso apenas a midias e agendaminimo

Plataforma (Admin Romeo)

PapelDescricaoEscopo
adminAdministrador da plataforma RomeoTodas organizacoes
suporteAtendimento ao clienteLeitura em todas org
financeiroGestao de repasses e taxasFinanceiro global

Portais Externos

PapelDescricaoEscopo
proprietarioDono do imovelSeus imoveis e extratos
inquilinoLocatario ativoSeu contrato e pagamentos
hospedeReserva de temporadaSua reserva
leadInteressado (pre-cadastro)Imoveis favoritados
3

Matriz de permissoes

Cada papel tem permissoes especificas. As principais acoes:

AcaoDonoGestorCorretorSecretaria
Ver todos imoveis
Ver seus imoveis
Criar/editar imovel
Ver financeiro
Aprovar contratos
Convidar membros
Configurar org
Excluir organizacao

O corretor ve apenas imoveis onde e o responsavel. Para compartilhar, usa o sistema de parcerias com split de comissao.

4

Personas e portais

Cada persona acessa um portal diferente com interface e permissoes especificas:

PersonaPortalURLFuncionalidades
CorretorApp/appCRM completo, imoveis, carteira
ProprietarioPortal Proprietario/proprietarioImoveis, extratos, documentos
InquilinoCentral do Inquilino/inquilinoContrato, pagamentos, suporte
HospedeReservas/reservasSuas reservas de temporada
VisitanteMarketplace/Busca publica de imoveis
Isolamento
Cada portal e uma aplicacao separada em termos de UI, mas compartilha o mesmo backend com RLS garantindo isolamento de dados.
5

Implementacao tecnica

O RBAC e implementado em duas camadas:

  • Row Level Security (RLS) — no Postgres/Supabase, garantindo que queries retornem apenas dados permitidos
  • Middleware de aplicacao — no Next.js, validando permissoes antes de renderizar paginas ou processar acoes
// lib/rbac.ts — checagem de permissao
export function canAccess(
  user: User,
  action: Action,
  resource: Resource
): boolean {
  const role = user.papel;
  const permissions = ROLE_PERMISSIONS[role];
  return permissions.includes(action) &&
    isResourceOwner(user, resource);
}

// Middleware Next.js
export async function middleware(req) {
  const user = await getUser(req);
  if (!canAccess(user, 'read', req.resource)) {
    return NextResponse.redirect('/403');
  }
}

Detalhes de implementacao em /docs/tech/rbac-permissoes.

6

Auditoria de acesso

Toda acao sensivel gera registro de auditoria:

  • Login/logout e tentativas de acesso negado
  • Criacao, edicao e exclusao de registros
  • Alteracoes de permissoes e papeis
  • Acesso a dados sensiveis (CPF, financeiro)
LGPD
A trilha de auditoria e exigencia da LGPD para tratamento de dados pessoais. Veja /docs/lgpd.