[英]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.