В моей коллекции /users/
определено следующее правило доступа:
allow read: if isCurrentUser(userId) || isDoctor() || isAdmin();
allow write: if (isCurrentUser(userId) && !isModifyingPermissions() );
function isModifyingPermissions(){
return request.resource.data.keys().hasAny(["permissions"]);
}
Документ в коллекции users
имеет ряд свойств:
- name
- электронная почта
- права доступа
- ...
Проверка:
- выполнить неразрушающее обновление подключенногосоответствующий документ пользователя
myDocument.update({name: 'Hello Stackoverflow'});
Наблюдаемое поведение:
- Если у существующего ресурса есть свойство "permissions", обновление будет отклонено
- Если существующий ресурс не имеет свойства "permissions", тогда обновление разрешено
Ожидаемое поведение: - если запрошенное обновление содержит свойство "permissions", тогдав обновлении отказано - что бы ни содержал существующий объект, разрешите обновление, если оно не содержит свойства "permissions".
Я использую Angular5 (Ionic3) с Angularfire.
Мои ожидания неверны?