【发布时间】:2019-01-09 05:52:49
【问题描述】:
我正在尝试在我的数据库中设置一些基本的 Firestore 安全规则。我在查找相关文档以了解如何执行此操作时遇到了一些麻烦。
目前我的文档结构如下:
project(document): {
createdBy(string): chris@emailaddress.com,
users(object): {
{ graham@emailaddress.com(object): access: write },
{ paul@emailaddress.com(object): access: read }
}
}
我想设置我的规则以便:
用户必须登录才能读取、写入或删除任何内容
如果将用户添加到具有“读取”访问权限的项目中,则他们只能读取文档。
如果用户设置了写访问权限,他们可以更新和读取文档,但不能更新
createdBy字段。如果用户创建了文档,他们可以阅读、更新和删除文档。
我的安全规则是这样设置的:
service cloud.firestore {
match /databases/{database}/documents {
match /projects/{projectId} {
allow read: if existingData().users[getUser()token.email].access != null && isSignedInAndVerified()
allow read, update: if existingData().users[getUser()token.email].access != "write" && isSignedInAndVerified()
allow update, delete: if sameAsEmail(existingData().createdBy) && isSignedInAndVerified()
}
//my functions
function getUser(){
return request.auth
}
function existingData(){
return resource.data
}
function sameAsEmail(resource){
return resource == request.auth.token.email
}
function isSignedInAndVerified() {
return request.auth != null && request.auth.token.email_verified;
}
}
}
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security