2017-12-01 2 views
0

Ich versuche, eine Verwaltungsschnittstelle für die Webanwendung zu erstellen, die ich entwickle. Ich benutze Angular mit Angularfire2. Ich verwende Firebase Firestore als Datenbank.Firestore-Benutzer Collection isAdmin-Implementierung Angular

Ich wollte sehen, wie wir ein IsAdmin-Flag in der Benutzer-Sammlung implementieren können, so dass bestimmte Benutzer auf Admin-Funktionen zugreifen können.

Kann jemand etwas Licht darauf werfen, wie ich mich nähern kann, um das zu entwickeln. Ich weiß, dass Sicherheitsregeln für das Benutzerdokument festgelegt werden können. Wenn authentifizierte Benutzer in ihrem eigenen Dokument lesen und schreiben dürfen, was hindert sie daran, das IsAdmin-Flag zu ändern?

Oder ist das wirklich so einfach wie das Hinzufügen eines booleschen Schlüssels und das Umschalten in der Admin-Oberfläche?

Danke, Walter

Antwort

0

Sie können die Firebase Admin SDK mit benutzerdefinierten Auth Ansprüche aus einem benutzerdefinierten Server verwenden. Dann können Sie diese Ansprüche in die Sicherheitsregeln Ihres Firestores integrieren. Weitere Informationen zum Steuern des Zugriffs mit benutzerdefinierten Ansprüchen finden Sie unter here. In Ihren Firestore-Regeln, zum Beispiel, könnten Sie Lesezugriff auf dieses Dokument mit dem admin benutzerdefinierten Anspruch wie folgt begrenzen:

service cloud.firestore { 
    match /databases/{database}/documents/adminContent { 
    allow read: if request.auth.token.admin == true; 
    } 
} 

, die von einem benutzerdefinierten Server oder Cloud-Funktionen für die Firebase wie folgt festgelegt werden:

// Set admin privilege on the user corresponding to uid. 
admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => { 
    // The new custom claims will propagate to the user's ID token the 
    // next time a new one is issued. 
}); 
+0

Wow Jen! Danke für die Antwort eines großen Fans BTW. Das ist sehr cool. Ich habe davon noch nie etwas gehört und es sollte alles tun, was ich brauche, auch außerhalb von Admins. – wdumlao