2017-02-07 5 views
0

Ich habe die Firebase Web Authentication pretty much setup and working für oAuth sowie lokale Benutzername/Pwds (E-Mail-Adressen).Firebase Web-Authentifizierung - Administrator-Genehmigung für neue Konten

Meine Frage ist: Hat jemand eine Idee, wie man einen zusätzlichen Schritt einführt, so dass neue Konten von einem Site-Administrator genehmigt werden müssen, bevor sie vollständig validiert werden? Ich dachte daran, die user.emailVerified Eigenschaft zu optimieren/zu nutzen, aber ich denke, das wird nicht für oAuth-Nutzer funktionieren.

Gibt es einen einfachen Weg dies zu tun - um einen Admin-Genehmigungsschritt hinzuzufügen? Oder gibt es im Firebase-Authentifizierungs-Subsystem eine Eigenschaft, die ich einfach umschalten kann?

enter image description here

Antwort

5

einen Benutzer über Firebase Authentifizierung Erstellen bietet sie nur mit einer eindeutigen Benutzer-ID. Dies ermöglicht ihnen keinen Zugriff auf Ihre Apps oder "registriert" sie in keiner Weise. Das ist völlig dein Bereich. Es ist nichts anderes als eine Karte mit eindeutigen Zugangsdaten (z. B. Facebook-IDs oder E-Mail-/Passwort-Hashes) zu eindeutigen Firebase-IDs.

Sie können Benutzer "registrieren", indem Sie beliebige Zugriffsberechtigungen haben, und jeden Workflow, um den Benutzer in Ihre Datenbank (oder einen anderen geeigneten Mechanismus) aufzunehmen.

Unter der Annahme einer Datenbank würden Sie das Benutzerprofil/die Metadaten in einen Pfad schreiben, z. B. /users/$uid, und Ihre Sicherheitsregeln darauf basieren, ob /users/<user id> existiert.

Um die Genehmigung des Administrators zu erzwingen, wäre die einfachste Antwort, einen separaten Pfad zu pflegen, wie /registered/<user id>/true, auf den nur Administratoren zugreifen können (und natürlich Sicherheitsregeln).

Jetzt können Sie Regeln wie die folgenden schreiben:

{ 
    "...some path...": { 
    ".read": "root.child("registered/" + auth.uid).val() === true" 
    } 
} 

im Wesentlichen einen Registrierungsprozess durchzusetzen.

+0

Das macht Sinn. So kann ich die gesuchte "Autorisierungs" -Funktionalität hinzufügen. Vielen Dank. –

+0

OK, aber auf "auth.onAuthStateChanged" wie kann ich feststellen, dass der angemeldete Benutzer registriert/autorisiert ist oder nicht? Mit anderen Worten, ich möchte einen Link/Button nur für registrierte/autorisierte Benutzer anzeigen. Ich denke einfach 'db.ref ('/ registered /' + uid) .once ('value'). Dann (function (snap) {if (snap.val() === true) {// geloggt im Benutzer ist autorisiert}}); 'ist das sicher? Ist das der Weg, das zu tun? –

+0

Ich habe meine Frage mit einem Screenshot der Datenbank aktualisiert. "Händler" = "registrierte" Benutzer in Ihrer Antwort, d.h. die gleiche Idee. Vielen Dank für Ihre Hilfe. –

Verwandte Themen