Я пытаюсь настроить некоторые правила безопасности для своей базы данных Firestore, которую я использую для своего приложения Android и iOS. Моя база данных открыта для чтения и записи всеми пользователями (в определенной степени), но я не хочу, чтобы данные могли быть удалены / взломаны из записей вне приложения, поэтому мне нужны некоторые правила безопасности. Я понимаю, что: allow read, write: if request.auth.uid != null
недостаточно, поскольку его легко подделать извне приложения.
Вот чего я хочу добиться. Когда пользователь входит (даже анонимно), приложение отправляет свой уникальный идентификатор в коллекцию в базе данных. В этой коллекции хранятся все пользовательские идентификаторы всех пользователей, где имя документа является идентификатором пользователя.
Теперь в правилах безопасности я хочу разрешить чтение и запись моей базы данных только пользователям, чей идентификатор пользователя хранится в этом файле. коллекция. После попытки прочитать об этом, я все еще не знаю, как написать такое правило безопасности. Не могли бы вы помочь? Как я могу ссылаться на это поле коллекции в правилах безопасности и искать, если есть имена документов с идентификатором пользователя, запрашивающего?
Например, я бы хотел:
match /cities/{city} {
allow read, write: if request.auth.uid = userIdInDatabse()
}
I не знаю, как написать функцию userIdInDatabase (). Это должна быть функция, написанная в правилах безопасности, которая берет request.auth.uid и проверяет, находится ли этот uid запроса в коллекции uid, которые я сделал из приложения. Если идентификатор запроса находится в базе данных, функция вернет true. Если uid запроса нет в базе данных, он вернет false. Как мне написать такую функцию?
Большое спасибо! Я надеюсь, что это ясно.