Права Доступа в Компонентах: работают не так, как ожидается; но можно накостылить патч

Если в настройках Раздела или Инфоблока NetCat попробовать дать доступ на изменение объекта ВСЕМ, ничего не получится. Просмотр и Добавление работают одним образом, а Изменение, Включение и Удаление -- другим.

Речь идет вот об этих настройках:

Если первые две строки касаются действительно всех, включая неавторизованных пользователей, то оставшиеся три имеют совершенно другую логику.

Это не глюк, а неточная формулировка.

Под понятием "настройки доступа Изменение -> ВСЕ" подразумевается, что изменять объекты могут все, кто является авторизованным владельцем объекта.

Если юзер-владелец объекта не совпадает с текущим авторизованным юзером, то у него не будет возможности редактировать объект, даже если в разделе настроены права, которые вы описали.

И по этой же причине неавторизованные юзера вообще не имеют прав на изменение каких бы то ни было объектов.

Эта же проблема есть в настройках полей компонента. Написано, дескать выберите, кому будет доступно поле - всем, админам или никому. А подразумевается, что речь идет только о добавлении и изменении объектов. А при просмотре объектов все поля для чтения доступны абсолютно всем, независимо от этой настройки. Это правильно, но формулировка сбивает с толку тех программистов, к то не в теме.

пояснил Руслан Густокашин (www.welpis.ru )

Спасибо за пояснения, Руслан!

Очень жаль, что все так сформулированно :(( И что рядом в одной таблице настроек находятся две функции (Добавление и Изменение), которые интуитивно должны работать идентично, а работают совершенно по-разному. И это при всем при том -- функционал ядра, самое базовое, что есть в NetCat, и оно вот так вот реализовано :((

К чему все это приводит на практике? К тому, что архитектура проекта, продуманная при проектировании сайта, оказалось ошибочной. Все придется переделывать по-другому, откатываясь сильно назад. Крайне неприятная ситуация. Поэтому мы накостылили решение, эмулирующее ожидаемое поведение системы. Вот такое:

Костыльное решение проблемы:

Пришлось создать фейкового юзера с правами на редактирование и модерирование нужного нам раздела, в шаблон навигации макета дизайна вставить функцию авто-авторизации этого юзера + рефреш страницы, срабатывающий ровно один раз.

В виде кода это выглядит так:

if(!$AUTH_USER_ID){
  if($sub==216 && $action == 'change'){
    $nc_core = nc_Core::get_object();
    $nc_core->user->authorize_by_id(18); 
    header("Refresh:0");
  }
}

Код надо вставить в шаблон навигации макета дизайна, циферки заменить на актуальные для вашего сайта.

Блог

Что с Мастерхостом? Когда заработает?!

Этот вопрос всё чаще задают в Интернете начиная примерно с 12:00 дня 2 марта. А всё потому, что он накрылся!

далее

Автоматизированная Система Управления Бэкапами

Автоматизированная Система Управления Бэкапами позволяет добиться полного контроля над резервными копиями сайтов внутри инфраструктуры веб-студии. Если вы поддерживаете десятки сайтов на разных хостингах, без подобной системы вы не можете быть на 100% уверены в том, что каждый из них был корректно зарезервирован прошлой ночью.

далее

Хорошая верстка в LESS: как?

Здесь собраны некоторые рекомендации по верстке макетов дизайна с использованием LESS. Они годятся для проектов, где необходимо сверстать сложный макет дизайна с использованием CSS-фреймоворка и LESS препроцессора.

далее

Хороший веб-дизайн: как?

Photoshop и PSD-файлы были популярны в начале века, а сейчас чтобы создать дизайн сложного веб-сайта практичнее использовать специализированные инструменты. И не только потому, что статические PSD-файлы с трудом справляются с задачей визуализации динамической тянущейся верстки и анимации. Еще и потому, что важно не только нарисовать красиво, но и удобно передать результат верстальщику.

далее

Весь блог тут