我有一个运行有Firebase实时数据库的应用程序。
我有几个节点: 用户(包含uid,名称和“角色”等用户信息-可以为true或false) 和私人数据(包含每个用户可以自行输入的各种内容)
我正在尝试建立一个管理界面,在该界面中,“ admin”(在users表中如此标记)也可以在其他所有人的私有区域中查看数据。
{
"rules": {
"users":{
".indexOn": ["uid", "roles"],
".read": true,
".write": "root.child('users').child(auth.uid).child('roles').child('ADMIN').val() == true",
}
}
}
const UserItemBase = (props) => {
const [loading, setLoading] = useState(false);
const [user, setUser] = useState(props.location.state.user);
const [isAdmin, setIsAdmin] = useState(user.roles.ADMIN);
const roles = {};
useEffect(() => {
//prevent accidental admin change to current user logged in
if (props.match.params.id !== props.firebase.auth.currentUser.uid) {
console.log(isAdmin);
roles[ROLES.ADMIN] = isAdmin;
props.firebase.user(props.match.params.id).update({ roles: roles });
}
}, [isAdmin]);
上面是代码,管理员可以在其中向其他用户授予管理员访问权限或将其撤消。
但是我在访问时遇到了麻烦,并无法使用这些规则对数据进行更改。