• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/model/role.php
  • Класс: BitrixDocumentGeneratorModelRole
  • Вызов: Role::setPermissions
public function setPermissions(array $permissions)
{
	$result = new Result();
	$roleId = $this->getId();
	if(!$roleId)
	{
		return $result->addError(new Error('Cannot set permissions on a role without id'));
	}

	$deletePermissionResult = RolePermissionTable::deleteByRoleId($roleId);
	if(!$deletePermissionResult->isSuccess())
	{
		$result->addErrors($deletePermissionResult->getErrors());
	}
	$permissions = $this->normalizePermissions($permissions);
	foreach ($permissions as $entity => $actions)
	{
		foreach ($actions as $action => $permission)
		{
			$addRolePermissionResult = RolePermissionTable::add(array(
				'ROLE_ID' => $roleId,
				'ENTITY' => $entity,
				'ACTION' => $action,
				'PERMISSION' => $permission
			));
			if(!$addRolePermissionResult->isSuccess())
			{
				$result->addErrors($addRolePermissionResult->getErrors());
			}
		}
	}

	if($result->isSuccess())
	{
		$this->permissions = $permissions;
	}

	return $result;
}