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.
PrincipioPrivilegio minimo: cada usuario tem apenas as permissoes necessarias para sua funcao. Toda acao sensivel e auditada.
2
Papeis do sistema
Organizacao (Imobiliaria)
| Papel | Descricao | Escopo |
|---|---|---|
| dono | Proprietario da organizacao, acesso total | full |
| gestor | Gerente, ve toda a equipe e financeiro | amplo |
| corretor | Ve apenas seus imoveis e clientes | restrito |
| secretaria | Suporte administrativo, sem financeiro | restrito |
| fotografo | Acesso apenas a midias e agenda | minimo |
Plataforma (Admin Romeo)
| Papel | Descricao | Escopo |
|---|---|---|
| admin | Administrador da plataforma Romeo | Todas organizacoes |
| suporte | Atendimento ao cliente | Leitura em todas org |
| financeiro | Gestao de repasses e taxas | Financeiro global |
Portais Externos
| Papel | Descricao | Escopo |
|---|---|---|
| proprietario | Dono do imovel | Seus imoveis e extratos |
| inquilino | Locatario ativo | Seu contrato e pagamentos |
| hospede | Reserva de temporada | Sua reserva |
| lead | Interessado (pre-cadastro) | Imoveis favoritados |
3
Matriz de permissoes
Cada papel tem permissoes especificas. As principais acoes:
| Acao | Dono | Gestor | Corretor | Secretaria |
|---|---|---|---|---|
| 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:
| Persona | Portal | URL | Funcionalidades |
|---|---|---|---|
| Corretor | App | /app | CRM completo, imoveis, carteira |
| Proprietario | Portal Proprietario | /proprietario | Imoveis, extratos, documentos |
| Inquilino | Central do Inquilino | /inquilino | Contrato, pagamentos, suporte |
| Hospede | Reservas | /reservas | Suas reservas de temporada |
| Visitante | Marketplace | / | Busca publica de imoveis |
IsolamentoCada 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)
LGPDA trilha de auditoria e exigencia da LGPD para tratamento de dados pessoais. Veja /docs/lgpd.