Правила безопасности на стороне сервера Firestore могут считывать только информацию о пользователе, которая закодирована в его токене ID. Это означает, что вы можете реализовать это только в том случае, если вы закодируете данные GPS о местоположении пользователя в их идентификационный токен и сделаете это безопасным способом.
Шаги, которые я могу придумать:
- На устройстве определите местоположение пользователя.
- Отправьте это местоположение в облачную функцию (или другую доверенную среду, такую как сервер, которым вы управляете).
- Убедитесь, что пользователь действительно находится на каким-то образом это местоположение.
- Установите местоположение в профиле пользователя как пользовательское утверждение, как показано здесь .
- Ответьте клиенту, что его профиль был обновлен.
- Вернувшись на устройство, используйте этот ответ, чтобы обновить sh идентификатор токена, чтобы он содержал информацию о местоположении.
- Отправьте запрос в базу данных, которая теперь будет содержать это местоположение. информация.
- Убедитесь, что запрошенный документ (ы) находится в требуемом диапазоне в правилах безопасности, сравнив информацию в запросе / запросе с данными в документе (ах).
Как вы можете видеть, этот процесс довольно сложный, и я даже не уверен, как обезопасить шаг 3. Так что вам придется задуматься, стоит ли защищать сценарий использования, или, может быть, лучше просто ограничить объем данных, выходящий за пределы диапазона, в который люди могут запрашивать данные одновременно.