So lassen Sie verschiedene angemeldete Benutzer in Firebase verschiedene Seiten aufrufen

Lunbox

Ich habe es also so gemacht, dass ein angemeldeter Benutzer zu einer TabsPage wechselt, aber wenn er nicht angemeldet ist, zur Anmeldeseite. Das Problem ist, dass ich zwei Benutzer habe, einen Kunden und einen Veranstalter. Ich möchte also etwas tun, wenn (user.useType === "customer") zu TabsPage und if (user.useType === "eventorganiser") zu EventTabsPage gehen, andernfalls, wenn kein Benutzer zu LoginPage geht.

Ich versuche einen Benutzer-Firebase-Snapshot, arbeite aber überhaupt nicht, da immer true zurückgegeben wird. Bin ich nah dran Ich habe userType in der Datenbank, die entweder userType: "customer" oder userType: "eventorganiser" ist.

import { Reference } from '@firebase/database-types';

@Component({
templateUrl: 'app.html',
})
export class MyApp {
rootPage: any;
public  type : Reference
constructor(platform: Platform,
statusBar: StatusBar,
splashScreen: SplashScreen) {
firebase.initializeApp(firebaseConfig);
this.type = firebase.database().ref("userProfile");
this.type.once("value")
  .then(function (snapshot) {
    this.type  = snapshot.val().userType
  });

const unsubscribe: Unsubscribe = firebase
  .auth()
  .onAuthStateChanged(user => {
    if (user && this.type.toString() === "customer") {
      this.rootPage = 'TabsPage'
      unsubscribe();
    }
    else if (user && this.type.toString() === "eventorganiser") {
      this.rootPage = 'EventTabsPage';
      unsubscribe();
    }
    else {
      this.rootPage = 'LoginPage';
      unsubscribe();
    }
  });

Datenbank ist wie unten

  {
"userProfile" : {
"3RQOUe9cqcRX2IMy0S290S9trSM2" : {
  "birthDate" : "2018-02-20",
  "email" : "[email protected]",
  "firstName" : "asda",
  "lastName" : "dsad",
  "userType" : "customer"
},
  "CHtJTfDmCgfaMY91ve4oepvIkuc2" : {
  "birthDate" : "2018-02-20",
  "email" : "[email protected]",
  "firstName" : "lk",
  "lastName" : "",
  "userType" : "eventorganiser"
},

Mein Arbeitscode für alle Benutzer ist unten

   const unsubscribe: Unsubscribe = firebase
  .auth()
  .onAuthStateChanged(user  => {
    if (user) {
      this.rootPage = 'TabsPage';
      unsubscribe();
    } else {
      this.rootPage = 'LoginPage';
      unsubscribe();
    }
  })
Javebratt

Es ist möglich, dass zu dem Zeitpunkt, zu dem Ihre Apps aufrufen:

firebase
  .auth()
  .onAuthStateChanged(user => {
    if (user && this.type.toString() === "customer") {
      this.rootPage = 'TabsPage'
      unsubscribe();
    }

Das:

this.type = firebase.database().ref("userProfile");
this.type.once("value")
  .then(function (snapshot) {
    this.type  = snapshot.val().userType
  });

Ist nicht bereit, da es sich um einen asynchronen Aufruf handelt und nicht darauf wartet, dass der Wert zurückgegeben wird, bevor Ihre onAuthStateChanged()Funktion aufgerufen wird .

Stellen Sie außerdem sicher, dass dies die richtige Referenz ist, da / userType ein generischer Knoten ist.

So habe ich das in der Vergangenheit gemacht:

const unsubscribe: Unsubscribe = firebase
  .auth()
  .onAuthStateChanged(user => {
    if (user) {
      firebase.database().ref("userProfile").once("value").then(function (snapshot) {
        if (snapshot.val().userType === 'customer') {
          this.rootPage = 'TabsPage';
        } else {
          this.rootPage = 'EventTabsPage'
        }
      });
    } else {
      this.rootPage = 'LoginPage';
      unsubscribe();
    }
  });

Nach diesem Ablauf werden zuerst der Benutzer und dann das Benutzerprofil abgerufen und anschließend die Werte überprüft.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

So öffnen Sie verschiedene Seiten, je nachdem, was der Benutzer schreibt

So ändern Sie verschiedene Header für verschiedene Seiten in Laravel

So leiten Sie Benutzer je nach Eingabewert auf verschiedene Seiten um

So beschränken Sie den Zugriff nicht autorisierter Benutzer auf verschiedene Seiten in django

So senden Sie verschiedene Nachrichten an Benutzer

Zeigen Sie verschiedene Seiten basierend auf dem Benutzer - django

Erzwingen Sie, dass angemeldete Benutzer nur angemeldete Seiten sehen

So zeigen Sie die aktuell angemeldete Benutzer-Firebase an

So lassen Sie OnPaint verschiedene ControlPaint.DrawBorderStyle-Funktionen ausführen, wenn der Benutzer das Steuerelement auswählt

So verbinden Sie verschiedene Seiten mit der Homepage in Flatter

So laden Sie verschiedene Stile auf verschiedenen Seiten in Umbraco

So teilen Sie Providerdaten von Streambuilder über verschiedene Seiten (Kontexte)

So verwenden Sie useContext, um verschiedene Seiten zu übersetzen

So lassen Sie verschiedene Arten von Eingaben (Datei, Text) zusammenarbeiten

Bachstelze: So beschränken Sie alle Seiten nur auf angemeldete Benutzer

So wählen Sie in MATLAB verschiedene Farben für verschiedene Seiten einer Oberfläche aus

Verschiedene UI-Funktionen für angemeldete und nicht angemeldete Benutzer

So erteilen Sie Berechtigungen für verschiedene Benutzer

Leiten Sie je nach Rolle unterschiedliche Benutzer auf verschiedene Seiten der Keycloak-Anmeldung um

Lassen Sie den Benutzer verschiedene Schaltflächenaktionen in der Shinydashboard-App erstellen

Lassen Sie nicht zu, dass ein Benutzer dasselbe Element für verschiedene Auswahleingaben verwendet

Binden Sie verschiedene Aktionsersteller auf verschiedenen Seiten

So überprüfen Sie, ob der in Firebase angemeldete Benutzer ein Kennwort hat

Wie kann man verschiedene Seiten so aussehen lassen, als würde eine einzelne Seite auf und ab geschoben?

So haben Sie verschiedene Cloud-Funktionsdateien für verschiedene Firebase-Benutzerkonten

So aktualisieren Sie verschiedene untergeordnete Knoten gleichzeitig Firebase Android

So erstellen Sie 2 verschiedene Benutzergruppen in Firebase AUTH mit Flutter

So lassen Sie eine andere Singleton-Klasse instanziieren, indem Sie verschiedene Parameter an den Konstruktor übergeben

So zeigen Sie verschiedene Seiten aus dem mittleren Element von JFrame an (bei Einstellung auf BorderLayout)