我试图获得用户的管理员权限,该权限为真或假。我不认为我得到了当前登录的用户详细信息,下面的代码是我所拥有的,但是当我调试它时,它似乎遍历了 firebase 表中的所有用户,如果有的话,它会将按钮设置为可见的
databaseUsers = FirebaseDatabase.getInstance().getReference("users");
// buttonAddProducts.setVisibility(View.GONE);
// buttonAddBeverages.setVisibility(View.GONE);
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference currentUserReference = databaseUsers.child(uid);
currentUserReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot userSnapshot) {
if (userSnapshot.exists()) {
User user = userSnapshot.getValue(User.class);
if(user.getAdminUser() == true)
{
buttonAddProducts.setVisibility(View.VISIBLE);
buttonAddBeverages.setVisibility(View.VISIBLE);
}
}
else{
Log.i("myInfoTag", "Connection problem");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore exceptions
}
});
您正在侦听所有用户,然后遍历他们,如果其中任何一个是管理员,则显示按钮。
如果你只想显示当前用户的按钮,你应该只查询当前用户。在您当前的数据模型中,可能类似于:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference currentUserReference = databaseUsers.child(uid);
currentUserReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
User user = venueSnapshot.getValue(User.class);
if(user.getAdminUser() == true)
{
buttonAddProducts.setVisibility(View.VISIBLE);
buttonAddBeverages.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore exceptions
}
});
这不仅会为您提供所需的行为,还会大大减少您的应用程序使用的带宽。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句