Я настроил свой класс для управления доступом с помощью списков ACL.Только создатель объекта может просматривать или редактировать объект.Многие тысячи этих объектов используются в производственной среде.
У меня есть новое требование, при определенных обстоятельствах, разрешать пользователю удалять объекты другого пользователя.Самая простая аналогия состоит в том, чтобы представить функцию администратора, которая позволяет модераторам удалять все комментарии определенного оскорбительного пользователя.
Поскольку клиент не может этого сделать, я определяю облачную функцию для ее обработки, которая сможет использоватьмастер ключ.Я передаю идентификатор пользователя от клиента в облачную функцию, и он должен удалить все комментарии этого пользователя.
Однако облачная функция не может найти комментарии, поскольку они связаны с пользователем толькоACL.Насколько я могу судить, запрос по ACL невозможен.Это точно?
Какой здесь правильный подход?Нужен ли мне дополнительный столбец, кроме ACL, для повторной идентификации комментатора, просто чтобы я мог запросить его?Это кажется дублирующим.Мне также нужно обновить множество существующих записей, скопировав пользователя, указанного в ACL, в новый столбец.Это вообще возможно?
Или есть какой-нибудь способ создать ACL для использования облачной функцией и использовать его вместо главного ключа, чтобы запрос выполнял поиск, как если бы речь шла о пользователе?
MyПоследнее (последнее средство) предложение - извлечь всех объектов и затем выполнить итерацию по ним, проверяя ACL.Очевидно, что это довольно плохое решение для масштабирования и производительности, так как мне понадобится собрать сотни тысяч элементов, чтобы проверить их все.