В Битрикс реализован вполне удобный и гибкий в настройках механизм для разграничения прав доступа работы с различными модулями, компонентами и документами сайта. 

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

Для реализации данной задачи, нам понадобится написать свой обработчик события.

Для этого мы воспользуемся событием OnBeforeIBlockElementUpdate, которое возникает до изменения элемента инфоблока, и в нашем случае поможет предотвратить перезапись созданного элемента инфоблока.

В файле init.php, расположенного на сайте в папке /bitrix/php_interface/ или в папке /local/php_interface/, пишем следующий код с проверкой на условие - если логин пользователя не соответствует логину создателя инфоблока и, если это не администратор, то выводим предупреждающее сообщение и отменяем действие.

//если элемент инфоблока был создан другим пользователем, то запрещаем изменения
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("BlockEdit", "OnBeforeIBlockElementUpdateHandler"));

class BlockEdit
{
    // создаем обработчик события "OnBeforeIBlockElementUpdate"
    function OnBeforeIBlockElementUpdateHandler(&$arFields)
    {	
    	//делаем проверку, если логин не равен создателю инфоблока и, если это не админ, то выводим сообщение и отменяем действие
        if($GLOBALS["USER"]->GetID() !== $arFields["CREATED_BY"] && $GLOBALS["USER"]->GetID() !== "1")
        {
            global $APPLICATION;
            $APPLICATION->throwException("Вы не можете изменять элементы, созданные другими пользователями!");
            return false;
        }
    }
}
Готовы сделать всю работу за Вас
от375
  • 30 минут


Поработаем?

Опишите свой запрос, мы расчитаем стоимость вашей задачи.