У меня есть данные Firebase, структурированные примерно так:
+ tasks
+ task_id
+ title
+ user
+ ...
+ users
+ ...
Из внешнего интерфейса (с использованием AngularJS и AngularFire (плюс встроенный SimpleLogin)) — когда вошедший в систему пользователь создает задачу, пользовательский идентификатор пользователя (например, simplelogin: 2) помещается в пользовательскую часть создаваемой задачи.
Когда пользователь вошел в систему, он может просматривать только свои задачи, используя:
$firebase( ref.orderByChild('user').equalTo(User.uid) );
Следующим шагом является защита данных, с чем я борюсь. Я пробовал:
"tasks": {
".indexOn": ["user", "order"],
".write": "auth != null",
".read": "auth != null && data.child('user').val() == auth.uid",
"$task": {
"title": {
".validate": "newData.isString() && newData.val().length <= 1000"
},
"completed": {
},
"time_added": {
".validate": "newData.val() <= now"
},
"order": {
},
"user": {
".validate": "newData.val() != null && newData.val() == auth.uid"
},
"$other": {
".validate": false
}
}
}
а также:
"tasks": {
"$task": {
".indexOn": ["user", "order"],
".write": "auth != null",
".read": "auth != null && data.child('user').val() == auth.uid",
"title": {
".validate": "newData.isString() && newData.val().length <= 1000"
},
"completed": {
},
"time_added": {
".validate": "newData.val() <= now"
},
"order": {
},
"user": {
".validate": "newData.val() != null && newData.val() == auth.uid"
},
"$other": {
".validate": false
}
}
}
Однако я получаю:
Ошибка: permission_denied: у клиента нет разрешения на доступ к нужным данным.
Где я ошибаюсь?