База данных firebase не разрешает подстроку электронной почты пользователя

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

users
   -username (a substring of the users email)
       -all other data

где имя пользователя - это подстрока из текста до точки в адресе электронной почты (например, имя пользователя johnsmith@gmail.com будет johnsmith @ gmail). Я пытаюсь написать несколько правил, основанных на этом формате, но продолжаю получать эту ошибку

Error saving rules - Line 8: Key names can't contain ".", "#", "$", "/", "[", or "]" (unbound names start with "$")

Это код JSON, который я пытаюсь использовать для этого правила.

{
  "rules": {
    ".read":"auth.uid != null",
    ".write":false,
    "users": {
      "$substringBefore(auth.token.email,' ')": {
        ".write": true
      }
    }
  }
}

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

Поскольку адреса электронной почты могут содержать символы «.», «#», «$», «/», «[» И / или «]», мне интересно, как вы собираетесь это работать. (Из них "." Очень распространено, ваш пример пользователя также может получать электронную почту как "john.smith@gmail.com", ничего не меняя со своей стороны, gmail молча игнорирует точки в локальной части.)

Cupcake Protocol 13.09.2018 20:40

@CupcakeProtocol Я так не думал об этом и теперь вижу серьезные недостатки в этой системе. Как лучше организовать пользователей?

stor314 13.09.2018 20:43

Я полностью за то, чтобы позволить пользователям выбирать свои собственные имена пользователей. Но в этом есть своя сложность.

Cupcake Protocol 13.09.2018 20:54

Почему вы не используете их идентификатор аутентификации Firebase в качестве ключа? Этот шаблон очень хорошо документирован и прост в реализации. firebase.google.com/docs/database/security/user-security

Doug Stevenson 13.09.2018 21:23

@DougStevenson Я создал схему базы данных, когда не знал об uid, потому что я был новичком в firebase, я пытался избежать реструктуризации моего кода, но мне кажется, что мне придется это сделать, чтобы позволить достаточно правила безопасности.

stor314 14.09.2018 17:20
0
5
109
0

Другие вопросы по теме