【发布时间】:2019-10-25 18:59:30
【问题描述】:
大家好,我有这样的收藏
organization : [
- id : auto generated
- users:
[0]
- uid: user1
- userName: testUser
]
我正在使用 Angular 并尝试将新的用户对象推送到用户数组,但权限被拒绝。我的帐户在我登录时应标记为已通过,并且还具有在此集合上创建、更新、删除的权限。
这是我在 Angular 应用中写的内容
AddToOrganization(userData, organization){
firebase.firestore().collection("organizations").doc(organization.id).set(
{users: [userData]},
{merge: true}
);
}
这是我的 Firebase 规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Function
function getRole(){
return get(/database/$(database)/documents/users/$(request.auth.uid)).data;
}
function isSignedIn(){
return request.auth != null;
}
function isAdmin(){
return getRole().roles.keys().hasAny(['admin']) == true;
}
// organizations documents
match /organizations/{organization}{
allow read;
allow create,update: if isSignedIn() && request.resoure.data.roles.keys().hasAny(['admin','editor']) == true;
allow delete: if isSignedIn() && isAdmin() == true;
}
}
我也尝试在模拟器上运行,但它只触发到文档级别,我想要的是将数据推送到该文档内的数组。
【问题讨论】:
-
您的规则仅允许修改“组织”中的文档,前提是正在编写的文档有一个名为“角色”的字段,该字段必须包含“管理员”或“编辑”。跨度>
标签: angular firebase google-cloud-firestore firebase-security