Relatório de exemplo com dados fictícios.

← Voltar

Relatório de revisão

Projeto
corredores-crm
Commit testado
a3f9c21
Data
2026-10-15
Ambiente
Reconstruído a partir do repositório · Chromium desktop · dados fictícios

Resumo

Seu app funciona no principal: criar e editar clientes é salvo corretamente. Encontramos um problema grave: Pedro (Usuário B) consegue ver e editar os clientes da Ana (Usuário A). Corrija isso primeiro.

1 · Falhou1 · Suspeita3 · Passou1 · Não verificado

Fluxos e verificações

  • Passou

    Cadastro e login

    Com confirmação por e-mail capturada no ambiente de teste.

  • Passou

    Criar e editar um cliente

    A mudança continua lá ao recarregar e em uma nova sessão.

  • Falhou

    Usuário B com os clientes do Usuário A

    Pedro vê e edita um cliente da Ana, também pela API.

  • Passou

    Visitante sem login

    Não acessa rotas nem dados privados.

  • Suspeita

    Tabela de notas sem proteção por linha

    Indício no código; não confirmado executando.

  • Não verificado

    Cobrança real com cartão

    Fora do escopo: foi usado um serviço simulado.

Achado 1Falhou

Pedro (Usuário B) consegue ver e editar os clientes da Ana (Usuário A)

Severidade:
Alta
Confiança:
Alta · executado

Impacto

Qualquer corretor pode ver a carteira inteira de outro e mudar suas etapas de venda.

Pré-condições e papel

Dois corretores logados. Ana tem o cliente “Imobiliária Sol”.

Passos para reproduzir

  1. 1Entrar como Ana e criar o cliente “Imobiliária Sol”.
  2. 2Sair e entrar como Pedro.
  3. 3Abrir “Meus clientes”: aparece “Imobiliária Sol”.
  4. 4Mudar a etapa para “fechado” e recarregar: a mudança fica salva no cliente da Ana.

Esperado

Pedro só vê e edita seus próprios clientes; a API rejeita a mudança.

Observado

A lista do Pedro inclui clientes da Ana e a API aceita a mudança (204).

Evidência

GET /rest/v1/clients · Pedro
200 OK · 2 linhas, 1 da Ana
[{ "id": "c_01…", "name": "Imobiliária Sol", "user_id": "<A>" }, …]
PATCH /rest/v1/clients?id=eq.c_01… · Pedro
204 No Content · stage: "negociação" → "fechado"
SELECT stage FROM clients WHERE id = 'c_01…'
"fechado"

Localização técnica

supabase/migrations/20260901_clients.sql · política “Authenticated can read clients”

Hipótese de causa

A política da tabela permite ler e escrever a qualquer usuário logado (condição true), sem comparar user_id com o usuário atual. É uma hipótese, não uma conclusão.

Prompt para corrigir

Cole no Claude, Cursor, Lovable, Bolt ou outra ferramenta.

No meu app, os corretores conseguem ver e editar os clientes de outros corretores.
Corrija o acesso à tabela "clients" para que cada usuário só possa ler e modificar seus próprios registros (user_id = auth.uid()), tanto pela interface quanto chamando a API diretamente.
- Crie uma nova migração; não edite migrações anteriores.
- Se houver um papel de administrador que deva ver tudo, mantenha esse acesso com uma política separada.
- Não altere outras tabelas nem outras funções do app.
- Ao terminar, explique o que mudou para eu clicar em "Testar de novo" na UserB.

Este achado foi útil?

Usa a nova execução incluída. Neste exemplo nada é executado.