Правила безопасности Firestore - PullRequest
0 голосов
/ 12 февраля 2019

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

Я создал приложение для проекта.С такой структурой данных:

"School": {
    school1:
    school2: {
        "Users": {
            userId: {
                "SchoolName": "school2"
            }
        }
        "Projects": {
            projectId: {
            }
       }
    }
}

Только аутентифицированные пользователи могут читать и писать во всю базу данных, и только пользователи в одной и той же школе могут читать и записывать данные в эту школу.Например, только пользователи в school2 могут добавить проект в school2.

Я попробовал что-то подобное, но это не сработало

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
    match /School/{schoolName} {
        allow read, write: if get(/databases/{database}/documents/School/$(schoolName)/Users/{userId}).data.SchoolName[(schoolName)]
    }
  }
}

Может кто-нибудь показать мне, как это сделать, и, может быть, хорошее объяснение того, как думать о правилах безопасности.Заранее большое спасибо!

1 Ответ

0 голосов
/ 12 февраля 2019

вы сделали только одну ошибку, замените эту строку:

 allow read, write: if get(/databases/{database}/documents/School/$(schoolName)/Users/{userId}).data.SchoolName[(schoolName)]

на эту:

 allow read, write: if get(/databases/{database}/documents/School/$(schoolName)/Users/{request.auth.uid}).data.SchoolName == "school2"
...