public function getDigestHash($sRealm, $sUserName) { if (class_exists('CApi') && \CApi::IsValid()) { /* @var $oApiCapabilityManager \CApiCapabilityManager */ $oApiCapabilityManager = \CApi::GetSystemManager('capability'); if ($oApiCapabilityManager) { $oAccount = \Afterlogic\DAV\Utils::GetAccountByLogin($sUserName); if ($oAccount && $oAccount->IsDisabled) { return null; } $bIsOutlookSyncClient = \Afterlogic\DAV\Utils::ValidateClient('outlooksync'); $bIsMobileSync = false; $bIsOutlookSync = false; $bIsDemo = false; if ($oAccount) { $bIsMobileSync = $oApiCapabilityManager->isMobileSyncSupported($oAccount); $bIsOutlookSync = $oApiCapabilityManager->isOutlookSyncSupported($oAccount); \CApi::Plugin()->RunHook('plugin-is-demo-account', array(&$oAccount, &$bIsDemo)); } if ($oAccount && ($bIsMobileSync && !$bIsOutlookSyncClient || $bIsOutlookSync && $bIsOutlookSyncClient) || $bIsDemo || $sUserName === \CApi::ExecuteMethod('Dav::GetPublicUser')) { return md5($sUserName . ':' . $sRealm . ':' . ($bIsDemo ? 'demo' : $oAccount->IncomingMailPassword)); } } } return null; }
/** * @param string $sEmail * @param string $sIncPassword * @param string $sIncLogin Default value is empty string. * @param string $sLanguage Default value is empty string. * * @throws CApiManagerException(Errs::WebMailManager_AccountDisabled) 1501 * @throws CApiManagerException(Errs::Mail_AccountAuthentication) 4002 * @throws CApiManagerException(Errs::WebMailManager_AccountCreateOnLogin) 1503 * * @return CAccount|null|bool */ public function loginToAccount($sEmail, $sIncPassword, $sIncLogin = '', $sLanguage = '') { $oResult = null; \CApi::AddSecret($sIncPassword); /* @var $oApiUsersManager CApiUsersManager */ $oApiUsersManager = CApi::GetSystemManager('users'); $bAuthResult = false; $oAccount = $oApiUsersManager->getAccountByEmail($sEmail); if ($oAccount instanceof CAccount) { if ($oAccount->IsDisabled || $oAccount->Domain && $oAccount->Domain->IsDisabled) { throw new CApiManagerException(Errs::WebMailManager_AccountDisabled); } if (0 < $oAccount->IdTenant) { $oApiTenantsManager = CApi::GetSystemManager('tenants'); if ($oApiTenantsManager) { $oTenant = $oApiTenantsManager->getTenantById($oAccount->IdTenant); if ($oTenant && ($oTenant->IsDisabled || 0 < $oTenant->Expared && $oTenant->Expared < \time())) { throw new CApiManagerException(Errs::WebMailManager_AccountDisabled); } } } if (0 < strlen($sLanguage) && $sLanguage !== $oAccount->User->DefaultLanguage) { $oAccount->User->DefaultLanguage = $sLanguage; } if ($oAccount->Domain->AllowWebMail && $oAccount->AllowMail) { if ($sIncPassword !== $oAccount->IncomingMailPassword) { $oAccount->IncomingMailPassword = $sIncPassword; } try { \CApi::ExecuteMethod('Mail::ValidateAccountConnection', array('Account' => $oAccount)); } catch (Exception $oException) { throw $oException; } } else { if ($sIncPassword !== $oAccount->IncomingMailPassword) { throw new CApiManagerException(Errs::Mail_AccountAuthentication); } } $sObsoleteIncPassword = $oAccount->GetObsoleteValue('IncomingMailPassword'); $sObsoleteLanguage = $oAccount->User->GetObsoleteValue('DefaultLanguage'); if (null !== $sObsoleteIncPassword && $sObsoleteIncPassword !== $oAccount->IncomingMailPassword || null !== $sObsoleteLanguage && $sObsoleteLanguage !== $oAccount->User->DefaultLanguage || $oAccount->ForceSaveOnLogin) { $oApiUsersManager->updateAccount($oAccount); } $oApiUsersManager->updateAccountLastLoginAndCount($oAccount->IdUser); $oResult = $oAccount; } else { if (null === $oAccount) { $aExtValues = array(); if (0 < strlen($sIncLogin)) { $aExtValues['Login'] = $sIncLogin; } $aExtValues['ApiIntegratorLoginToAccountResult'] = $bAuthResult; $oAccount = \CApi::ExecuteMethod('Core::CreateAccount', array('Email' => $sEmail, 'Password' => $sIncPassword, 'Language' => $sLanguage, 'ExtValues' => $aExtValues)); if ($oAccount instanceof CAccount) { $oResult = $oAccount; } else { throw new CApiManagerException(Errs::WebMailManager_AccountCreateOnLogin); } } else { $oException = $oApiUsersManager->GetLastException(); throw is_object($oException) ? $oException : new CApiManagerException(Errs::WebMailManager_AccountCreateOnLogin); } } return $oResult; }