En ce qui concerne les règles de sécurité de la base de données Firebase Realtime, les données publiques et privées peuvent exister dans la même arborescence en utilisant par exemple la règle suivante.
Cependant, lorsque l'on utilise Firestore, il ne semble pas nous permettre de faire la même chose car le mandrin de données que l'on peut récupérer est uniquement sous collection ou document. Lorsque des données publiques et privées sont définies dans le même document et que l'on récupère des données avec la collection/le document, on obtient une erreur de permissions insuffisantes pour les données privées si l'on n'en est pas le propriétaire.
En utilisant RTDB, nous pouvons obtenir les données de 'users/{userId}/publicInfo' parce que nous n'avons aucune idée de la collection/document.
Y a-t-il un moyen de faire cela de RTDB avec Firestore ? Sinon, nous devrions avoir des collections publiques/privées séparément ?
// rule of Firebase Realtime Database
"users": {
"$user_id": {
".read": "auth.uid === $user_id",
".write": "auth.uid === $user_id",
"private": {
".read": "auth.uid === $user_id" // --- private data
}
"public": {
".read": "auth !== null"; // --- public data
}
}
}
// Firestore
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
match /{private=**} {
allow read, write: if request.auth == userId;
}
match /{public=**} {
allow read, write: if request.auth != null;
}
}
}
}