Ролевая аутентификация в приложении android с использованием Firebase - PullRequest
0 голосов
/ 02 мая 2020

Я занимаюсь разработкой приложения android и использую базу данных Firebase. Он содержит авторизацию и несколько действий для разных ролей. Если вы входите как «Установщик», открывается одно действие, а если как «Контакт-Центр» - другое, но сейчас это не важно. Поэтому мне нужно проверить роль введенной пары электронной почты и пароля. Так что я должен делать?

Вот моя структура базы данных:

database structure

Код входа:

mAuth.signInWithEmailAndPassword(email,pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if(task.isSuccessful()){
            Toast.makeText(MainActivity.this,"Аутентификация прошла успешно",Toast.LENGTH_SHORT).show();
            startActivity(new Intent(getApplicationContext(),RoleInstallerForm.class));
        }
        else {
            Toast.makeText(MainActivity.this,"Проверьте правильность введённых данных", Toast.LENGTH_SHORT).show();
                            ProgressBar.setVisibility(View.GONE);
        }
    }
});

1 Ответ

0 голосов
/ 05 мая 2020

Измените свой код так:

mAuth.signInWithEmailAndPassword(email,pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if(task.isSuccessful()){
            Toast.makeText(MainActivity.this,"Àóòåíòèôèêàöèÿ ïðîøëà óñïåøíî",Toast.LENGTH_SHORT).show();

            try {
                currentUserUID = FirebaseAuth.getInstance().getCurrentUser().getUid();
            }catch (Throwable throwable){
                throwable.printStackTrace();
            }

            roleRef = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUserUID).child("Role");
            roleRef.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    try {
                        String userRole = dataSnapshot.getValue().toString();
                        //Add if-else here if you need any
                        //For example:
                        //I DONT UNDERSTAND RUSSIAN ROLE YOU TYPE
                        // JUST REPLACE THE ROLE NAMES
                        if(userRole.equals(leader)){
                            startActivity(new Intent(MainActivity.this, some-activity.class));
                        }else{
                            startActivity(new Intent(MainActivity.this, other-activity.class));
                        }
                    }catch (Throwable e){
                        Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
                    }
                 }
                 @Override
                 public void onCancelled(@NonNull DatabaseError databaseError) {
                     Toast.makeText(getApplicationContext(), databaseError.toString(), Toast.LENGTH_SHORT).show();
                 }
             });   

         }
         else {
             Toast.makeText(MainActivity.this,"Ïðîâåðüòå ïðàâèëüíîñòü ââåä¸ííûõ äàííûõ", Toast.LENGTH_SHORT).show();
             ProgressBar.setVisibility(View.GONE);
         }
     }
 });
...