在创建Firebase规则时遇到问题,我在“员工”集合中创建了一个字段“ role”,因此在这里,我想区分数据库中允许读取/写入的每种类型的用户,等等。我的问题是,由于某种原因,我无法验证尝试阅读其他信息的用户是否真的是管理员,因此在“ isAdministrator”功能中,我无法使获取功能正常工作
Column I
这就是我的收藏集的样子:
答案 0 :(得分:0)
match / databases / {database} /文档必须包装所有内容,包括函数,如下所示:
service cloud.firestore {
match /databases/{database}/documents {
// FUNCTIONS
// Function: Check if an authenticated employee is admin
function isAdministrator(){
return get(/databases/$(database)/documents/employees/$(request.auth.uid)).data.role == 'admin'
|| get(/databases/$(database)/documents/employees/$(request.auth.uid)).role == 'admin';
}
// RULES
// Allows only admins and 'owner' to acess his document
match /employees/{document=**} {
allow read, write, update: if request.auth.uid == resource.data.uid || isAdministrator();
allow create, delete, list: if isAdministrator();
}
}
}