Copia y pega este código en la sección "Realtime Database" > "Rules" de tu consola de Firebase para asegurar que nadie pueda robar información o enviar mensajes sin permiso.
{
"rules": {
// 1. USUARIOS: Seguridad Individual
"users": {
"$uid": {
// Solo el dueño de la cuenta o un Administrador pueden leer el perfil
".read": "auth != null && (auth.uid == $uid || root.child('users').child(auth.uid).child('role').val() == 'admin')",
// Solo el dueño puede actualizar su progreso, o el Admin cambiar roles
".write": "auth != null && (auth.uid == $uid || root.child('users').child(auth.uid).child('role').val() == 'admin')",
// Indexamos por email para que el panel administrativo pueda buscar rápido
".indexOn": ["email", "market", "timestamp"]
}
},
// 2. LEADS: Captura de Prospectos (Test MKT)
"leads": {
"test-salud-financiera": {
// Solo el administrador puede ver la lista de leads
".read": "auth != null && root.child('users').child(auth.uid).child('role').val() == 'admin'",
// Cualquiera (incluso sin login) puede enviar su test, pero no borrar otros
"$leadId": {
".write": "!data.exists() || (auth != null && root.child('users').child(auth.uid).child('role').val() == 'admin')"
},
".indexOn": ["timestamp"]
},
"intereses-seguros": {
".read": "auth != null && root.child('users').child(auth.uid).child('role').val() == 'admin'",
".write": "auth != null", // Requiere estar logueado para mostrar interés
".indexOn": ["timestamp"]
}
},
// 3. NOTIFICACIONES: Protección contra Spam
"notifications": {
"$uid": {
// Solo el usuario dueño de la campana puede leer sus mensajes
".read": "auth != null && auth.uid == $uid",
// Solo el Admin puede escribir (enviar) notificaciones
// El usuario solo puede escribir para marcar como 'leído' (read: true)
".write": "auth != null && (root.child('users').child(auth.uid).child('role').val() == 'admin' || (auth.uid == $uid && newData.hasChildren(['read'])))"
}
},
// 4. CONFIGURACIÓN: Solo el Admin cambia el sistema
"config": {
".read": "true", // Público para que la web sepa qué sectores hay
".write": "auth != null && root.child('users').child(auth.uid).child('role').val() == 'admin'"
}
}
}