- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/controller/syncajax.php
- Класс: BitrixCalendarControllerSyncAjax
- Вызов: SyncAjax::createIcloudConnectionAction
public function createIcloudConnectionAction($appleId, $appPassword)
{
$params['ENTITY_ID'] = CCalendar::getCurUserId();
$params['ENTITY_TYPE'] = 'user';
$params['SERVER_HOST'] = ICloudHelper::SERVER_PATH;
$params['SERVER_USERNAME'] = trim($appleId);
$params['SERVER_PASSWORD'] = trim($appPassword);
$params['NAME'] = str_replace('#NAME#', $params['SERVER_USERNAME'], ICloudHelper::CONNECTION_NAME);
if (!Loader::includeModule('dav'))
{
$this->addError(new Error(Loc::getMessage('EC_SYNCAJAX_DAV_REQUIRED')));
return [
'status' => 'error',
'message' => Loc::getMessage('EC_SYNCAJAX_DAV_REQUIRED'),
];
}
$typeModel = TypeModel::createFromXmlId($params['ENTITY_TYPE']);
$accessController = new TypeAccessController(CCalendar::GetUserId());
if (!$accessController->check(ActionDictionary::ACTION_TYPE_EDIT, $typeModel, []))
{
$this->addError(new Error('Access Denied'));
return [
'status' => 'error',
'message' => 'Access Denied',
];
}
if (!preg_match("/[a-z]{4}-[a-z]{4}-[a-z]{4}-[a-z]{4}/", $params['SERVER_PASSWORD']))
{
$this->addError(new Error('Incorrect app password'));
return [
'status' => 'incorrect_app_pass',
'message' => 'Incorrect app password'
];
}
$vendorSyncManager = new IcloudVendorSyncManager();
$connection = $vendorSyncManager->initConnection($params);
if (!$connection)
{
$this->addError(new Error(Loc::getMessage('EC_SYNCALAX_ICLOUD_WRONG_AUTH')));
return [
'status' => 'error',
'message' => Loc::getMessage('EC_SYNCALAX_ICLOUD_WRONG_AUTH'),
];
}
return [
'status' => 'success',
'connectionId' => $connection
];
}