我对Firebase很陌生,而且我正在实施我的第一个WebApp。 WebApp应该是我们活动的管理系统(我们是一家活动公司)。
所以我的数据库结构类似于:
{
"employees" : {
"y4j2NYsc9waWzLOi4fH7HJFkZsj1" : {
"email" : "emailadress",
"events" : {
"-KImpJr6asZfG28vCF5I" : {
"isPlanned" : true
},
"-KImqNoVIJjeiU-f1FtM" : {
"isPlanned" : true
}
},
"givenname" : "Tobias",
"role" : 10,
"surname" : "K.",
"uid" : "y4j2NYsc9waWzLOi4fH7HJFkZsj1"
}
},
"events" : {
"-KImpJr6asZfG28vCF5I" : {
"date" : 1464386400000,
"employees" : [ "58438e51-40a8-4c60-bd28-d9f5ee2f2871", "y4j2NYsc9waWzLOi4fH7HJFkZsj1" ],
"name" : "Schützenfest"
},
"-KImpXeis1gDGGCWIx83" : {
"date" : 1467237600000,
"employees" : [ "0e9f20c0-547d-46e9-ad01-c7152812a3b2", "658feaf6-26a2-4ea5-b932-a661191f0f38" ],
"name" : "Sommerfest"
}
},
"roles" : {
"Admin" : 99,
"Chef" : 50,
"Freelancer" : 15,
"Mitarbeiter" : 20,
"Praktikant" : 10
}
}
我的安全规则如下:
{
"rules": {
"events": {
"$event": {
".read": "root.child('employees/' + auth.uid + '/role').val() >= 20 || root.child('employees/' + auth.uid + '/events/' + $event + '/isPlanned').val() === true",
".write": "root.child('employees/' + auth.uid + '/role').val() >= 20 || root.child('employees/' + auth.uid + '/events/' + $event + '/isPlanned').val() === true"
}
},
"employees": {
"$employee": {
".read": "auth !== null",
"role": {".write": "root.child('employees/' + auth.uid + '/role').val() >= 50"},
"$other": {".write" : "$employee === auth.uid"}
}
},
"roles": {
".read": "auth !== null",
".write": false
}
}
}
我将实现20岁以下角色的员工只能看到他们必须工作的事件。
在我的代码中,我有一个列出所有事件的页面。如果员工的角色低于20,那么只应该有他必须工作的事件。 我的假设是,当我做的时候
var ref = new Firebase("https://myid.firebaseio.com/events");
var allEvents = $firebaseArray(ref);
我将获得所有活动,我的员工可以访问。但我得到这样的错误:
错误:permission_denied:客户无权访问所需数据。
有没有办法实现我的愿望?
非常感谢!
祝福
托比