rules_version = '2'; // Sicherheitsregeln für LeafItToMe. // // Grundprinzip: Alle App-Daten hängen an einem Haushalt. Lesen und Schreiben // darf nur, wer im Feld `memberUids` des Haushalts steht. Das eigene // Nutzer-Dokument (users/{uid}) darf nur der Nutzer selbst sehen. service cloud.firestore { match /databases/{database}/documents { function signedIn() { return request.auth != null; } function isMember(householdId) { return signedIn() && request.auth.uid in get(/databases/$(database)/documents/households/$(householdId)).data.memberUids; } // Eigenes Nutzerprofil (enthält u. a. die householdId). match /users/{uid} { allow read, write: if signedIn() && request.auth.uid == uid; } match /households/{householdId} { // Lesen/Ändern nur für Mitglieder. allow read, update: if signedIn() && request.auth.uid in resource.data.memberUids; // Anlegen nur, wenn man sich selbst als Mitglied einträgt // (passiert automatisch bei der Registrierung). allow create: if signedIn() && request.auth.uid in request.resource.data.memberUids; // Löschen von Haushalten ist bewusst nicht erlaubt. allow delete: if false; // Alle Unterdaten des Haushalts (plants, locations, ...): // voller Zugriff für Mitglieder, niemand sonst. match /{document=**} { allow read, write: if isMember(householdId); } } } }