【发布时间】:2020-04-06 17:27:30
【问题描述】:
我希望在用户应用中注册的用户无法登录到管理员或医生应用。
或者在医生应用中注册的医生无法登录用户或管理员应用。
或者已经在管理应用程序中注册的管理员无法登录医生或用户应用程序。
我尝试的用户验证方法是
private void updateUI(final FirebaseUser user) {
if (user!=null){
final DatabaseReference adminsRef = FirebaseDatabase.getInstance().getReference().child("Admins").child(user.getUid());
final DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("Users").child(user.getUid());
adminsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
userRole = dataSnapshot.child("role").getValue(String.class);
if (user.equals("admin")){
FancyToast.makeText(getApplicationContext(),"User already registered as an Admin",FancyToast.LENGTH_LONG,FancyToast.INFO,false).show();
FirebaseAuth.getInstance().signOut();
if (AccessToken.getCurrentAccessToken() != null) {
LoginManager.getInstance().logOut();
}
startActivity(new Intent(MainActivity.this,MainActivity.class));
finish();
}
else {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference userRef = database.getReference("Doctors").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
HashMap<String, Object> map = new HashMap<>();
map.put("uid", FirebaseAuth.getInstance().getCurrentUser().getUid());
map.put("email", FirebaseAuth.getInstance().getCurrentUser().getEmail());
map.put("name", FirebaseAuth.getInstance().getCurrentUser().getDisplayName());
map.put("profile_status","incomplete");
map.put("role","doctor");
//map.put("location", getIntent().getExtras().get("location").toString());
userRef.updateChildren(map).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
FancyToast.makeText(getApplicationContext(), "User details updated successfully", FancyToast.LENGTH_LONG, FancyToast.SUCCESS, true).show();
} else {
FancyToast.makeText(getApplicationContext(), "User details update unsuccessful", FancyToast.LENGTH_LONG, FancyToast.SUCCESS, true).show();
}
}
});
Intent intent = new Intent(MainActivity.this, HomeActivity.class);
startActivity(intent);
finish();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
userRole = dataSnapshot.child("role").getValue(String.class);
if (userRole.equals("user")){
FancyToast.makeText(getApplicationContext(),"User already registered as a Customer",FancyToast.LENGTH_LONG,FancyToast.INFO,false).show();
FirebaseAuth.getInstance().signOut();
if (AccessToken.getCurrentAccessToken() != null) {
LoginManager.getInstance().logOut();
}
startActivity(new Intent(MainActivity.this,MainActivity.class));
finish();
}
else {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference userRef = database.getReference("Doctors").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
HashMap<String, Object> map = new HashMap<>();
map.put("uid", FirebaseAuth.getInstance().getCurrentUser().getUid());
map.put("email", FirebaseAuth.getInstance().getCurrentUser().getEmail());
map.put("name", FirebaseAuth.getInstance().getCurrentUser().getDisplayName());
map.put("profile_status","incomplete");
map.put("role","doctor");
//map.put("location", getIntent().getExtras().get("location").toString());
userRef.updateChildren(map).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
FancyToast.makeText(getApplicationContext(), "User details updated successfully", FancyToast.LENGTH_LONG, FancyToast.SUCCESS, true).show();
} else {
FancyToast.makeText(getApplicationContext(), "User details update unsuccessful", FancyToast.LENGTH_LONG, FancyToast.SUCCESS, true).show();
}
}
});
Intent intent = new Intent(MainActivity.this, HomeActivity.class);
startActivity(intent);
finish();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
【问题讨论】:
标签: java android firebase-realtime-database firebase-authentication