Optimizando las reglas de seguridad Firebase
Presentación
Firebase Auth
Cloud Firestore
Cloud Storage
Cloud Functions
Curso Firebase para Web se encuentra en desarrollo. Vuelve pronto para encontrar nuevas lecciones.
- Con las funciones podemos evitar repetir las mismas instrucciones una y otra vez.
- Por otro lado, gracias al objeto
resource.data
podemos hacer comparaciones con nuestra propia petición enrequest.resource
para realizar una validación de datos efectiva.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
match /rooms/{roomID} {
allow read: if isAuth();
allow create: if isAuth()
&& isComplete(request.resource.data.name)
&& isComplete(request.resource.data.description);
allow update: if request.auth.uid == resource.data.adminUid
&& isComplete(request.resource.data.name)
&& isComplete(request.resource.data.description);
allow delete: if request.auth.uid == resource.data.adminUid;
}
function isAuth() {
return request.auth != null
}
function isComplete(prop) {
return prop is string && prop.size() > 10 && prop.size() < 160;
}
match /{path=**}/messages/{messageID} {
// Leer si estás autentificado
allow read: if isAuth();
// Escribir si estás dentro de la sala
allow create: if request.resource.data.roomId in get(/databases/$(database)/documents/users/$(request.auth.uid)).data.connected;
// Actualizar (modificamos perfil) si los mensajes son del usuario
allow update: if resource.data.userId == request.auth.uid;
// Eliminar si eres el admin
allow delete: if get(/databases/$(database)/documents/rooms/$(resource.data.roomId)).data.adminUid == request.auth.uid;
}
match /users/{userID} {
allow read, write: if request.auth.uid == userID;
}
}
}
¿Tienes alguna pregunta sobre esta lección de Curso Firebase para Web?
Resuelve todas tus dudas sobre Firebase en la Comunidad de Escuela Vue: un lugar donde participar, aprender y ayudar. ¡Te esperamos!.
Tras el registro (si no lo has hecho ya) serás redirigido/a al canal adecuado en la Comunidad.