Я хочу, чтобы пользователи могли создавать сообщения (с помощью контактной формы), но не позволяли им читать или обновлять. Я добавляю новый контакт следующим образом:
app.firestore().collection("messages").add({
name: this.state.name,
subject: this.state.subject,
message: this.state.message});
Со следующими правилами безопасности это разрешено:
match /messages/{message}{
allow read, delete: if request.auth.uid=="<SOME_ID>";
allow create: if true;
}
Но когда я добавляю правило обновления, как показано ниже, я получаю ошибку недостаточного разрешения при добавлении нового сообщения.
match /messages/{message}{
allow read, delete, update: if request.auth.uid=="<SOME_ID>";
allow create: if true;
}
Если переместить правило обновления ниже создания, это все равно не сработает. Но попытались установить обновление «всегда разрешать / true», после чего действие добавления снова работает.
Поэтому кажется, что Firestore каким-то образом смотрит на самое строгое правило из обновления и создает правила, но только если правило для обновления определено явно. Я что-то здесь не так делаю?
Редактировать:
match /messages/{message}{
allow read, delete: if request.auth.uid=="<SOME_ID>";
allow create: if true; allow update: if false }
Не приводит к проблемам с разрешениями. Таким образом, поведение кажется специфичным для типа проверки, которую я здесь делаю ..