- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/access/rule/taskremoverule.php
- Класс: BitrixTasksAccessRuleTaskRemoveRule
- Вызов: TaskRemoveRule::execute
public function execute(AccessibleItem $task = null, $params = null): bool
{
if (!$task)
{
$this->controller->addError(static::class, 'Incorrect task');
return false;
}
if ($this->user->isAdmin())
{
return true;
}
if (
$task->isMember($this->user->getUserId(), RoleDictionary::ROLE_DIRECTOR)
&& $this->user->getPermission(PermissionDictionary::TASK_DIRECTOR_DELETE)
)
{
return true;
}
if (array_intersect($task->getMembers(RoleDictionary::ROLE_DIRECTOR), $this->user->getAllSubordinates()))
{
return true;
}
$isInDepartment = $task->isInDepartment($this->user->getUserId(), false, [RoleDictionary::ROLE_RESPONSIBLE, RoleDictionary::ROLE_DIRECTOR, RoleDictionary::ROLE_ACCOMPLICE]);
if (
$this->user->getPermission(PermissionDictionary::TASK_DEPARTMENT_DELETE)
&& $isInDepartment
)
{
return true;
}
if (
$this->user->getPermission(PermissionDictionary::TASK_NON_DEPARTMENT_DELETE)
&& !$isInDepartment
)
{
return true;
}
// task not in group
if (!$task->getGroupId())
{
$this->controller->addError(static::class, 'Unable to load group info');
return false;
}
// task in group
if (!Loader::includeModule("socialnetwork"))
{
$this->controller->addError(static::class, 'Unable to load socialnetwork');
return false;
}
if (!BitrixSocialnetworkInternalsRegistryFeaturePermRegistry::getInstance()->get(
$task->getGroupId(),
'tasks',
'delete_tasks',
$this->user->getUserId()
))
{
$this->controller->addError(static::class, 'Access to remove denied by group');
return false;
}
return true;
}