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
Linda Hamiltonoriginal
2024-12-10 18:02:10753parcourir

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);
    }
  }
};

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!

Déclaration:
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