Maison >Java >javaDidacticiel >Comment rediriger plusieurs types d'utilisateurs (étudiants, enseignants et administrateurs) vers des activités spécifiques après la connexion à Firebase ?

Comment rediriger plusieurs types d'utilisateurs (étudiants, enseignants et administrateurs) vers des activités spécifiques après la connexion à Firebase ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-22 02:04:13829parcourir

How to Redirect Multiple User Types (Students, Teachers, and Admins) to Specific Activities After Firebase Login?

Redirection de plusieurs types d'utilisateurs vers des activités spécifiques

Une application en cours de développement sur Firebase nécessitait de rediriger trois types d'utilisateurs vers leurs activités respectives après la connexion. L'application redirigeait déjà avec succès deux types d'utilisateurs, à savoir les étudiants et les enseignants, avec le code suivant :

mAuthListener = new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(FirebaseAuth firebaseAuth) {
        FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        if (mAuth.getCurrentUser() != null) {
            String uid = mAuth.getInstance().getCurrentUser().getUid();
            DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
            uidRef = rootRef.child("STUDENTS").child(uid);
            ValueEventListener valueEventListener = new ValueEventListener() {
                @Override
                public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()) {
                        startActivity(new Intent(MainActivity.this, student.class));
                    } else {
                        startActivity(new Intent(MainActivity.this, teacher.class));
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            };
            uidRef.addListenerForSingleValueEvent(valueEventListener);
        } else {
            Log.d("TAG", "firebaseUser is null");
        }
    }
};

Cependant, la confusion est apparue lorsqu'est venu le temps d'ajouter un troisième type d'utilisateur, les administrateurs (admins), et les rediriger vers leur activité spécifique.

La solution à ce problème impliquait de modifier la structure de la base de données pour inclure le troisième type d'utilisateur et d'ajouter un écouteur pour vérifier l'attribut "Type" de l'utilisateur node.

Structure de la base de données

Le nouveau schéma de la base de données ressemble à ceci :

Firebase-root
|
--- users
|
--- uidOne
|     |
|     --- name: "Ed"
|     |
|     --- type: 1
|
--- uidTwo
|     |
|     --- name: "Tyff"
|     |
|     --- type: 2
|
--- uidOne
|     |
|     --- name: "Admin"
|     |
|     --- type: 3

Modification du code

Le ValueEventListener a été modifié pour vérifier le "Type " attribue et redirige les utilisateurs en fonction de sa valeur :

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        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.d(TAG, databaseError.getMessage());
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

Avec ces modifications, l'application redirige avec succès les trois les types d'utilisateurs à leurs activités respectives après la connexion.

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