Ich habe Daten in Feuerbasis in folgendem Format -Firebase Sicherheitsregel
"requests" : {
"-KpPjt5jQZHBalQRxKSK" : {
"email" : "[email protected]",
"itemId" : "-KmazkKp5wavdHOczlDS",
"quantity" : 1,
"status" : "new"
},
"-KpZsw3KHE9oD1CIFQ4R" : {
"email" : "[email protected]",
"itemId" : "-Kmb-ZXfao7VdfenhfYj",
"quantity" : 1,
"status" : "new"
}
}
Jede Anfrage enthält
"email" <- user's email id who has initiated the request.
"itemId" <- id of requested item
"quantity" <- item quantity
"status" <- "new" | "approved" | decline.
I Firebase Regel zu schreiben, haben Schwierigkeiten, die würden:
- authentifizierten ermöglichen Benutzer, um auf Anfragen zuzugreifen/zu lesen, die von ihm/ihr erhoben werden.
- erlauben Admin Benutzer alle Anfragen zu lesen/zu aktualisieren.
Meine aktuelle Regel lautet wie folgt:
{
"rules": {
".read": false,
".write": false,
"items" : {
".read": "auth != null",
".write": "root.child('roles').child(auth.uid).val() === 'admin'"
},
"requests": {
".write": "root.child('roles').child(auth.uid).val() === 'admin'", /*Only Admins can update request*/
"$rId": {
".read": "data.child('email').val() == auth.email || root.child('roles').child(auth.uid).val() === 'admin'"/*Request owner and admin can only read the particular request*/
}
}
}
}
Ich habe separate Knoten Rollen aufrechterhalten, die hat { "uid": "Rolle" }
ich AngularFire2 bin mit abfragen Firebase in meiner App.
Beispielcode zum Abrufen Anforderungen mit bestimmten Status wie unten
const queryList$ = this.db.list('/requests', {
query: {
orderByChild: 'status',
equalTo: status
}
})
Dank Pari
Viel hängt davon ab, wie Sie das Konzept der * Admin-Benutzer implementieren *. Bitte bearbeiten Sie Ihre Frage so, dass sie zwei Code-Snippets enthält: 1) den minimalen Code für eine Operation, die erlaubt sein sollte, 2) den minimalen Code für eine Operation, die nicht erlaubt sein sollte. Es wäre auch gut, Ihre vorhandenen (minimalen) Sicherheitsregeln für die Anfragen zu sehen. –
Danke. Ich habe meine bestehenden Sicherheitsregeln hinzugefügt. –