繁体   English   中英

如何使用Android App中的Firebase Auth为某些电子邮件地址用户打开不同的活动

[英]How do you open different activities for certain e mail address users using Firebase Auth in Android App

我想在定义的管理员电子邮件登录时打开一个管理员活动,而不使用基于角色的身份验证。 我尝试了以下操作,但是当我使用admin@admin.com电子邮件登录时,它会继续打开profileActivity,有人可以帮忙吗? 编辑以包含完整的代码。 我正在尝试首先检查尝试登录的用户是否已注册,如果已经注册,是否有管理员电子邮件地址,如果是,请将其带到管理区域,否则,将其带到个人资料区域。 谢谢

progressBar.setVisibility(View.VISIBLE);
    mAuth.signInWithEmailAndPassword(email, password). addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override

        public void onComplete(@NonNull Task<AuthResult> task) {
            String loggedInUserEmail = mAuth.getCurrentUser().getEmail();
            String adminEmailAddress = "admin@admin.com";
            progressBar.setVisibility(View.GONE);
            if(task.isSuccessful() && (loggedInUserEmail.equals(adminEmailAddress))) {
                finish(); // finish activity
                Intent intent = new Intent(MainActivity.this, adminActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
               startActivity(intent);

            }



            if(task.isSuccessful()) {
                finish(); // finish activity
                Intent intent = new Intent(MainActivity.this, ProfileActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);


            }


            else
            {
                Toast.makeText(getApplicationContext(), task.getException().getMessage(),Toast.LENGTH_SHORT).show();
            }
        }
    });

您的代码中的问题是以下行:

if (mAuth.getCurrentUser() != null && email.equals("admin@admin.com"))

您完全不需要验证管理员的电子邮件地址。 您只是在验证是否可以使用mAuth.getCurrentUser() ,然后再验证来自editTextEmail的文本是否等于admin@admin.com ,但还不够。 为了解决这个问题,您需要更改代码的逻辑。 请参见以下代码:

String loggedInUserEmail = mAuth.getCurrentUser().getEmail();
String adminEmailAddress = "admin@admin.com";

if(loggedInUserEmail.equals(adminEmailAddress)) {
    finish();
    startActivity(new Intent(this, adminActivity.class));
} else {
    finish();
    startActivity(new Intent(this, ProfileActivity.class));
}

编辑:

if(task.isSuccessful() && (loggedInUserEmail.equals(adminEmailAddress))) {
    finish(); // finish activity
    Intent intent = new Intent(MainActivity.this, adminActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
} else {
    finish(); // finish activity
    Intent intent = new Intent(MainActivity.this, ProfileActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM