Я хочу, чтобы пользователи, которые зарегистрировались в приложении пользователя, не могли войти в приложение администратора или врачей.
Или врачи, которые зарегистрировались в приложении врачей, не могут войти в приложение пользователя или администратора.
Или администратор, который зарегистрировался в приложении администратора, не может войти в приложение для врачей или пользователей.
![database structure](https://i.stack.imgur.com/hvsY7.jpg)
Метод, который я пробовал для проверки пользователя,
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) {
}
});
}
}