Синтаксис правил безопасности Firebase со свойством arrays / list - PullRequest
1 голос
/ 14 марта 2019

В коллекции Firebase Firestore с путем «организации» каждый документ содержит список строковых идентификаторов пользователей, которые могут обновить или удалить этот документ.

export interface Organization{
  name?: string,
  owners: string[]
}

Я хотел бы создать правило безопасности Firebase, котороегарантирует, что только зарегистрированный пользователь с uid, который находится в этом списке, может редактировать или удалять объект.Не уверен в правильности синтаксиса.

service cloud.firestore {
  match /databases/{database}/documents {
    match /organizations/{organization} {
      allow read: if true;
      allow create: if request.auth != null;

      /// What should be the syntax here?
      allow update, delete: if request.auth != null && (request.auth.uid in resource.data.owners); // <--------- What should be the syntax for this line?

    }

1 Ответ

1 голос
/ 14 марта 2019

Хорошо, отвечая на мой собственный вопрос здесь на случай, если это будет полезно для кого-то еще.

Похоже, синтаксис 'in' выше действительно работает, хотя это было полное предположение, и я не смогнайдите любую документацию для этого в документации ролей безопасности Firebase.

Окончательный код:

service cloud.firestore {
  match /databases/{database}/documents {
    match /organizations/{organization} {
      allow read: if true;
      allow create: if request.auth != null;
      allow update, delete: if (request.auth != null) && (request.auth.uid in resource.data.owners); 
    }
...