Ограничьте firesotre CRUD для пользователей в пределах определенного домена - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь создать правило в Firestore, которое ограничивает использование всеми операциями CRUD для пользователей, принадлежащих к конкретному домену. Моя проблема заключается в том, что в контенте правила не содержится предложение содержимого.

это мое правило:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if isUserAndSignedIn();
    }
  }

  function isUserAndSignedIn(){
    return request.auth != null && request.auth.token.email.contains('domain.com')
  }
}

ошибка, которую я получаю: Ошибка: строка simulator.rules [9], столбец [36]. Ошибка функции не найдена: Имя: [содержит].

Я также пытался с indexOf, как

request.auth.token.email.indexOf ( 'domain.com') = - 1 request.auth.token.email.endsWith ( 'domain.com')

1 Ответ

0 голосов
/ 03 сентября 2018

request.auth.token.email будет строкой, а в соответствии со справочной документацией , у String нет метода с именем "contains". У него есть метод с именем matches для использования регулярных выражений, и вы можете видеть, что в документации есть полезный пример кода:

'user@domain.com'.matches('.*@domain[.]com') == true

Что вы должны быть в состоянии адаптировать к вашему делу:

return request.auth != null && request.auth.token.email.matches('.*@domain[.]com')
...