Maison > Java > javaDidacticiel > Comment rediriger les étudiants, les enseignants et les administrateurs vers leurs activités respectives après l'authentification Firebase ?

Comment rediriger les étudiants, les enseignants et les administrateurs vers leurs activités respectives après l'authentification Firebase ?

Linda Hamilton
Libérer: 2024-12-10 18:02:10
original
700 Les gens l'ont consulté

How to Redirect Students, Teachers, and Admins to Their Respective Activities After Firebase Authentication?

Implémentation de la redirection multi-utilisateurs dans une application de vote Firebase

Dans le contexte d'une application de vote basée sur Firebase, vous vous demandez comment rediriger trois types d'utilisateurs distincts (ÉTUDIANTS, ENSEIGNANTS et ADMINISTRATEURS) à leurs activités respectives après la connexion. Voici une version modifiée de votre code pour répondre à cette exigence :

mAuthListener = new FirebaseAuth.AuthStateListener() {
  @Override
  public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
    FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

    if (firebaseUser != null) {
      String uid = firebaseUser.getUid();
      DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
      DatabaseReference usersRef = rootRef.child("users").child(uid);

      ValueEventListener userListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
          // Assert that the DataSnapshot is valid
          if (!dataSnapshot.exists()) {
            Log.e(TAG, "Error: DataSnapshot not found");
            return;
          }

          // Check the user type and redirect accordingly
          if (dataSnapshot.child("type").getValue(Long.class) == 1) {
            startActivity(new Intent(MainActivity.this, student.class));
          } else if (dataSnapshot.child("type").getValue(Long.class) == 2) {
            startActivity(new Intent(MainActivity.this, teacher.class));
          } else if (dataSnapshot.child("type").getValue(Long.class) == 3) {
            startActivity(new Intent(MainActivity.this, admin.class));
          }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
          Log.e(TAG, databaseError.getMessage());
        }
      };

      usersRef.addListenerForSingleValueEvent(userListener);
    }
  }
};
Copier après la connexion

Modifications clés :

  • Le uidRef a été mis à jour pour pointer vers les utilisateurs nœud sous la racine Firebase.
  • Au lieu de vérifier uniquement l'existence d'un étudiant, le code vérifie désormais le type de nœud enfant pour déterminer le type d'utilisateur.
  • Trois conditions distinctes ont été ajoutées pour gérer les trois types d'utilisateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal