android 应用中使用 Firebase 的基于角色的身份验证

Role-based authentification in android app using Firebase

我正在开发 android 应用程序并使用 firebase 数据库。它包含针对不同角色的授权和少量活动。如果您输入为 "Installer" 打开一个 activity,如果输入为 "Contact-Centre" - 另一个,但现在这并不重要。所以我需要检查输入的一对电子邮件和密码的作用。那我该怎么办?

这是我的数据库结构:

登录码:

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

将您的代码修改为:

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