доступ к адресу электронной почты в правилах Firebase [дубликаты]

На этот вопрос уже есть ответ здесь:

Как мы можем гарантировать, что электронная почта, сохраненная пользователем Firebase, действительно является его собственной электронной почтой? 1 ответ

Я использую firebase 3. При написании правил firebase объект auth содержит только uid и провайдера. Есть ли способ, которым это может быть улучшено, чтобы также предоставить адрес электронной почты?

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

Я видел решения этого, предлагающие сохранить объект пользователя в базе данных Firebase (с электронной почтой), а затем использовать его в качестве ориентира в правилах. Проблема, с которой я могу столкнуться, состоит в том, что если бы кто-то знал адрес электронной почты пользователя с полными привилегиями, было бы довольно легко отладить код и манипулировать адресом электронной почты перед сохранением в firebase, что означает, что это сохранит их базу данных идентификатор рядом с чужим адресом электронной почты.

Единственный способ сделать это безопасным - это указать адрес электронной почты в объекте auth в правилах firebase, который нельзя взломать.

Я что-то пропустил?

БОЛЬШЕ ИНФОРМАЦИИ

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

Администратор сайта вручную создает пользователя заранее, предоставляя доступ к подмножеству данных. например
-users
  -user1Email
    -locations
      -someLocation:true
      -someOtherLocation:true

Пользователь аутентифицируется через гугл. На стороне клиента мы можем видеть их адрес электронной почты в auth.user.email

В правилах я хочу сделать что-то вроде

locations : {
  "$location": {
      ".read": "root.hasChild('users/' + auth.email + '/locations/' + $location)",
   }
}

Я знаю, что мне нужно уйти от адреса электронной почты, просто стараясь пока сделать его простым.

Я проверил это в симуляторе, и он отлично работает, если я использую собственного провайдера и предоставляю туда электронную почту, но при использовании Google «auth» в правиле имеет только свойства uid и провайдера, но не электронную почту.

Альтернатива (кроме использования собственного провайдера) состоит в том, чтобы сначала разрешить пользователю создавать свою учетную запись, а затем местоположения добавляются каждому пользователю, используя в качестве ключа его uid, а не адрес электронной почты, но владелец хочет иметь возможность настройте его заранее, чтобы в первый раз они входили в него сразу.

Ответы на вопрос(1)

Ваш ответ на вопрос