Я строю блог и использую Firestore для базы данных. Я пытаюсь написать правила безопасности, чтобы только пользователи, которые подписаны, могли просматривать содержимое и статью, но я хочу, чтобы все могли видеть заголовок и фотографию статьи на главной странице.
Моя схема базы данных похожа на this:
У меня есть коллекция статей, в которой каждый документ представляет собой отдельную статью, которая содержит поля, такие как заголовок и фотография. В каждом документе статьи есть подколлекция «Защищенный», в которой содержится содержание статьи, и я хочу, чтобы только подписанные пользователи могли получать эту защищенную информацию.
Мои правила до сих пор:
match /articles/{articleId} {
allow read: if true;
allow write: if request.auth.uid == 'someId';
match /articles/{articleId}/protected/{protecedId} {
allow read: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.subscription == true;
}
}
Как бы то ни было, это не позволяет моей домашней странице загружаться и показывать какие-либо статьи. Может ли кто-нибудь помочь мне выяснить, что не так с моими правилами?
ОБНОВЛЕНО: Мои правила теперь выглядят так:
match /articles/{articleId} {
allow read: if true;
allow write: if request.auth.uid == 'someid';
match /protected/{protectedId} {
allow read: if true;
allow write;
}
}
Однако моя домашняя страница снова не загружается. Единственное решение, кажется, состоит в том, чтобы добавить match / {document = **} к моим правилам. Однако это означает, что все мои другие правила перезаписаны.
ИСПРАВЛЕНО:
Мне нужно было написать правила для всех моих коллекций и подколлекций.