Как перенаправить несколько типов пользователей на их соответствующие действия? - PullRequest
0 голосов
/ 19 октября 2018

Я создаю приложение для голосования на Firebase.У меня есть 3 типа пользователей.Пока я могу успешно перенаправить 2 вида пользователей (СТУДЕНТЫ, УЧИТЕЛИ) на их соответствующие действия после того, как они войдут в систему с кодом, приведенным ниже, МОИ пользователи до сих пор Но теперь мне нужно добавить другого пользователя (ADMIN) иКак и другие пользователи, администратор также должен быть перенаправлен на свою конкретную деятельность после входа в систему.Я не совсем понимаю, как изменить мой код для третьего пользователя.

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()) {
                            //start students activity
                            startActivity(new Intent(MainActivity.this, student.class));

                        } else {
                            //start teachers activity
                            startActivity(new Intent(MainActivity.this, teacher.class));
                        }
                    }

                    //
                    @Override
                    public void onCancelled(DatabaseError databaseError) 
                    {
                    }
                };


uidRef.addListenerForSingleValueEvent(valueEventListener);

            }
            else{
                Log.d("TAG", "firebaseUser is null");
            }


        }
    };

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Использование onlye if (dataSnapshot.exists()) не решит ваши 3 типа пользовательских проблем.Предполагая, что тип третьего пользователя - 3, необходимо изменить структуру вашей базы данных.Итак, ваша новая схема базы данных должна выглядеть следующим образом:

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

Теперь вы должны добавить прослушиватель на узле uid и проверить тип пользователя следующим образом:

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);
0 голосов
/ 19 октября 2018

вам нужна другая структура данных, с users и roles/admin, roles/teacher, roles/student, а затем проверьте, какой узел имеет ключ (также совместимый с правилами безопасности).

, как выесть, вы можете просто удалить ветку else и запросить все три узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...