Проблема с вашими текущими правилами в том, что она позволяет любому пользователю читать / писать документ пользователя любого другого пользователя.Вы должны ограничить это немного больше, чтобы посмотреть на userId документов.Примерно так
service cloud.firestore {
match /databases/{database}/documents {
// Ensure the user is authenticated
function userIsAuthenticated() {
return request.auth != null && request.auth.uid != null
}
// Ensure the user owns the existing resource
function userOwnsResource() {
return userIsAuthenticated() && request.auth.uid == resource.data.userId
}
// Ensure the user owns the new resource
function userOwnsNewResource() {
return userIsAuthenticated() && request.auth.uid == request.resource.data.userId
}
match /users/{userId=**} {
allow read, update, delete: if userOwnsResource();
allow create: if userOwnsNewResource();
}
}
}
userOwnsResource
проверяет, что пользователь может получить доступ к существующему ресурсу.userOwnsNewResource
проверяет, могут ли они создать новый документ для своего идентификатора пользователя.Очевидно, что вы можете повторно использовать эти функции в других правилах, что удобно.