Правила безопасности Firebase Realtime Database


#1

Привет!
Наверняка многие используют в качестве бекэнда для своих несложных или учебных приложений Firebase. Помоги, пожалуйста, со следующей задачкой:

В приложении настроена регистрация пользовотеля через стандартный метод

Auth.auth().createUser(withEmail: email, password: password.....

так же при регистрации можно ввести свое username. Перед тем как зарегистрировать пользователя срабатывает метод проверки наличия username в базе и, если есть совпадение, то отказ в регистрации. Проверка через код:

 let databaseRef = Database.database().reference()
                   databaseRef.child("users").queryOrdered(byChild: "username").queryEqual(toValue: loginRegisterTextField.text).observeSingleEvent(of: .value, with: { (snapshot: DataSnapshot) in
       
                       if snapshot.exists() {
                           print("Login exists")
                           return
                       } else {
                           print("Login does not exist")
                      }
                   })

Структура JSON Firebase Realtime Database следующая:

Сейчас правила безопасности Firebase следующие:

{
  "rules": {
        
    "users" : { 
      ".read": "auth != null",

          "$uid" : {
            ".write": "auth != null && auth.uid == $uid",
        }
    },

Правила нормальные для приложения в целом, но они не дают возможность перед регистрацией (то есть еще не имея uid) прочитать ветку users без uid. Как прописать правила, чтобы можно было без uid нового пользователя сделать snapshot всей ветки users по ответвлению именно "username", а остальные параметры не показывать (name, email, about)?