Как расширить права на задачи?

116
Если нам нужно разрешить или запретить определенные действия над задачами (Например такой запрос: сотрудник без прав, должен иметь возможность создать задачу, поставив постановщиком и исполнителем других пользователей. Стандартно так не сделать, если ты не пользователь с правами Администратор) Есть событие в модуле sender, методе check которое вызывается вот здесь bitrix/modules/sender/lib/access/accesscontroller.php . Через него можно повлиять на результат проверки права пользователя на определенное действие.


//Установка обработчика:

$eventManager = EventManager::getInstance();
$eventManager->registerEventHandler('Bitrix\\Tasks\\Access\\TaskAccessController', \Bitrix\Main\Access\Event\EventDictionary::EVENT_ON_BEFORE_CHECK, 'my.module', Rights::class, 'setResponsibleAccess');

//Пример самого обработчика:

public static function setResponsibleAccess(Event $event)
{
    $parameters = $event->getParameters();
    if (in_array($parameters['action'], ['task_create', 'task_save', 'task_edit'])) {
        $event->addResult((new \Bitrix\Main\Access\Event\EventResult(EventResult::SUCCESS))->allowAccess());
    }
}

Важно: тип результата должен быть обязательно EventResult::SUCCESS, в классе \Bitrix\Main\Access\Event\Event, который наследуется от обычного класса \Bitrix\Main\Event, есть метод isAccess в котором это проверяется.

Яндекс.Метрика