Home >Java >javaTutorial >How to Redirect Multiple User Types (Students, Teachers, and Admins) to Specific Activities After Firebase Login?
An app being developed on Firebase required redirecting three types of users to their respective activities after login. The app was already successfully redirecting two user types, namely students and teachers, with the following code:
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"); } } };
However, the confusion arose when it came time to add a third user type, administrators (admins), and redirect them to their specific activity.
The solution to this issue involved modifying the database structure to include the third user type and adding a listener to check the "Type" attribute of the user node.
The new database schema looks like this:
Firebase-root | --- users | --- uidOne | | | --- name: "Ed" | | | --- type: 1 | --- uidTwo | | | --- name: "Tyff" | | | --- type: 2 | --- uidOne | | | --- name: "Admin" | | | --- type: 3
The ValueEventListener was modified to check the "Type" attribute and redirect users based on its value:
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);
With these changes, the app successfully redirects the three user types to their respective activities after login.
The above is the detailed content of How to Redirect Multiple User Types (Students, Teachers, and Admins) to Specific Activities After Firebase Login?. For more information, please follow other related articles on the PHP Chinese website!