2017-09-11 1 views
0

Ich habe meine Datenbank wie folgt aus:Firebase Datenbank-Regeln: andere Regel für Eltern und Kind

Firebase Rules ScreenShot

user123 ein Admin ist. Daher sollte er in der Lage sein, alle Knoten in Einträge zu durchlaufen. Andere können nicht sehen, Kind Einträge es sei denn, uid von entryID ist auth.uid

Wie soll ich Regeln für das? Wenn es keinen möglichen Weg gibt, irgendeinen Vorschlag, um dataBase zu ändern :)

Antwort

2

Wenn Sie bereits wissen, ist admin, in Ihrer Frage user123. Dann sollten Sie Datenbankregel wie sein

"entities": { 
    "$entryId":{ 
     // you don't what others to see other to see teh data 
    ".read": "auth.uid == 'user123'" 
     // any one who is logged in should write to the /entries node 
    ".write": "auth.uid != null" 
    } 
} 

Falls Sie, was die Regel dynamischer zu machen, dann können Sie

"entities": { 
    "$entityId":{ 
     // you don't what others to see other to see teh data 
     ".read": "root.child('users').child(auth.uid).child('isAdmin').val() == true || root.child('entities').child($entityId).child('uid').val() == auth.uid" 
     // any one who is logged in should write to the /entries node 
     ".write": "auth.uid != null" 
    } 
} 

tun können Sie weitere Informationen von hier https://firebase.google.com/docs/reference/security/database/

Alternativ Sie kann Ihr Eintragsmodell zu benutzerspezifischen

{ 
    "entities" :{ 
    "user465": { 
     "entry456": { 
     "text" : "Some sample text" 
     } 
    } 
    } 
} 

ändern In diesem Fall schreiben Sie Ihre Regel

"entities": { 
    "$userId":{ 
    // you don't what others to see other to see teh data 
    ".read": "root.child('users').child(auth.uid).child('isAdmin').val() == true || $userId == auth.uid" 
    // any one who is logged in should write to the /entries node 
    ".write": "auth.uid == $userId" 
    } 
} 
+0

Die Regel ist dynamisch. Mit dieser Regel kann der Benutzer, der den Eintrag erstellt hat, diesen nicht lesen. Beispiel: 'user123' sollte in der Lage sein, 'entry456' zu lesen. – npk

+0

@Nameer sehen Sie die aktualisierte Antwort, Sie können auch Ihr Einreichungsmodell ändern. – bash

+0

Aber Admin kann nicht alle Einträge durchlaufen, es zeigt "Erlaubnis verweigert" Fehler. – npk

Verwandte Themen