Привет!
Наверняка многие используют в качестве бекэнда для своих несложных или учебных приложений 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)?