Pedro (Usuario B) puede ver y editar los clientes de Ana (Usuario A)
- Severidad:
- Alta
- Confianza:
- Alta · ejecutado
Impacto
Precondiciones y rol
Pasos para reproducirlo
- 1Iniciar sesión como Ana y crear el cliente “Inmobiliaria Sol”.
- 2Cerrar sesión e iniciar como Pedro.
- 3Abrir “Mis clientes”: aparece “Inmobiliaria Sol”.
- 4Cambiar su etapa a “cerrado” y recargar: el cambio queda guardado en el cliente de Ana.
Esperado
Pedro solo ve y edita sus propios clientes; la API rechaza el cambio.
Observado
La lista de Pedro incluye clientes de Ana y la API acepta el cambio (204).
Evidencia
GET /rest/v1/clients · Pedro
200 OK · 2 filas, 1 de Ana
[{ "id": "c_01…", "name": "Inmobiliaria Sol", "user_id": "<A>" }, …]PATCH /rest/v1/clients?id=eq.c_01… · Pedro
204 No Content · stage: "negociación" → "cerrado"SELECT stage FROM clients WHERE id = 'c_01…'
"cerrado"Ubicación técnica
supabase/migrations/20260901_clients.sql · política “Authenticated can read clients”Hipótesis de causa
Prompt para corregirlo
Pégalo en Claude, Cursor, Lovable, Bolt u otra herramienta.
En mi app, los corredores pueden ver y editar los clientes de otros corredores. Corrige el acceso a la tabla "clients" para que cada usuario solo pueda leer y modificar sus propios registros (user_id = auth.uid()), tanto desde la interfaz como llamando a la API directamente. - Crea una migración nueva; no edites migraciones anteriores. - Si existe un rol administrador que deba ver todo, conserva ese acceso con una política aparte. - No cambies otras tablas ni otras funciones de la app. - Al terminar, explica qué cambiaste para que yo pulse "Volver a probar" en UserB.
¿Te sirvió este hallazgo?
Usa la re-ejecución incluida. En este ejemplo no se ejecuta nada.