Динамические правила Firestore? - PullRequest
0 голосов
/ 23 марта 2019

Динамические правила Firestore?

У меня есть 2 коллекции, и я контролирую доступ, но предоставляю customClaim. Теперь, если у меня все больше и больше коллекций, правила станут длинными.

Пример

service cloud.firestore {
  match /databases/{database}/documents {
    match /india/{documentID} {
    allow read, write : if request.auth.token.india_admin == true
    allow read : if  true
    }

  }

  match /databases/{database}/documents {
    match /japan/{documentID} {
    allow read, write : if request.auth.token.japan_admin == true
    allow read : if  true
    }

  }

}

Есть ли способ, которым я могу обобщить , используя collection name variable

1 Ответ

2 голосов
/ 24 марта 2019

То, что вы делаете сейчас, разрешает безусловный доступ для чтения ко всему. Вот что делает allow read: if true.

Попробуйте, используя подстановочный знак для имени коллекции:

match /{country}/{documentID} {
  allow read, write : if request.auth.token[country + "_admin"] == true;
}

Обратите внимание, что это имеет побочный эффект от применения ко ВСЕМ вашей коллекции высшего уровня, даже к тем, которые не представляют страну. Если вы используете другие коллекции верхнего уровня, для которых требуются другие правила, возможно, вы захотите поместить всю свою коллекцию, специфичную для страны, в подколлекции в рамках одной коллекции верхнего уровня.

...