【发布时间】:2020-03-15 15:57:51
【问题描述】:
我有一组邀请,但出现权限不足错误。
数据
"inviteID" : {
playerEmail: 'jon@doe.com',
teamID: 'abcdefg'
}
和一个团队
"teamID" : {
...
managers: [managerID, ...]
...
}
使用以下查询:
团队经理
查询看起来很简单
db.collections('invites').where('teamID', '==', myTeamID)
但规则必须检查查询的人是否是经理......
match /invites/{inviteID} {
function isManager() {
// managers is an array
return get(/databases/$(database)/documents/teams/$(resource.data.teamID)).data.managers.includes(request.auth.uid)
}
allow read: if (isManager())
}
我也有这条会失败的规则有关系吗?
// Allow user to read his own invites
match /invites/{inviteID} {
allow read: if (request.auth.token.email == resource.data.playerEmail)
}
匹配同一文档的第二条规则将失败,因为显然邀请不会与经理具有相同的电子邮件。我需要这条规则作为单独的查询允许用户查询他们的邀请。
似乎没有阅读,我遇到了权限问题。感谢您的帮助!
【问题讨论】:
标签: firebase google-cloud-firestore nosql firebase-security