Как настроить права доступа к элементам в торговом каталоге по свойству для группы пользователей?
Есть торговый каталог, у некоторых элементов свойство "ограниченный доступ" списком. Значение либо не выбрано, либо "да".
Как можно реализовать разграничение прав доступа к элементам, у которых такое свойство в состоянии "да"? Т.е. чтобы на странице каталога данные товары не выводились, если пользователь не относится к группе, которой разрешен просмотр. Ограничивать вручную через админку для каждого конкретного элемента просмотр получилось, но это непродуктивно.
1 Добавить компоненту каталога фильтр в котором фильтровать элементы по этому полю - если человек не включен в группу, требовать в фильтре чтобы поле не было "да"
2 Настроить хук на события ПослеДобавленияЭлемента и ПослеИзмененияЭлемента который будет менять права доступа на элемент, в случае если это свойство изменилось - ограничивать если стало "да" или снимать ограничение если перестало быть "да".
Спасибо! Первый вариант подошел, но элемент можно посмотреть детально, если ввести урл, а это уязвимость. Может быть, знаете, как запретить вывод подробной информации при детальном просмотре? Я делаю еще раз проверку на соответствие требуемой группы в шаблоне компонента catalog.element, но не могу понять, как ограничить доступ к просмотру.
Шаблон в области кэширования - не стоит делать проверку в нем.
Можно опять же сделать двумя способами - прямо в скрипте страницы добавить проверку на доступ и вообще не запускать компонент, а выбрасывать 404 ошибку. Это конечно несколько по колхозному, но самая простая реализация.
Второй - добавить в component_epilog.php эту проверку. Т.е. там посмотреть на ваше ограничивающее свойство (только не забудьте добавить ключ PROPERTIES в кэшируемые в result_modifier.php) и если оно есть, а у пользователя нет прав - выбросить 404 ошибку там.