芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/www/cloud.pulsehost.co.uk/modules/MailSignupPlesk/Module.php
subscribeEvent('MailSignup::Signup::before', [$this, 'onAfterSignup']); $sPleskHost = $this->oModuleSettings->PleskHostname; $this->oClient = new \PleskX\Api\Client($sPleskHost); $sPleskUser = $this->oModuleSettings->PleskAdminUser; $sPleskPass = $this->oModuleSettings->PleskAdminPassword; if ($sPleskPass && !\Aurora\System\Utils::IsEncryptedValue($sPleskPass)) { $this->setConfig('PleskAdminPassword', \Aurora\System\Utils::EncryptValue($sPleskPass)); $this->saveModuleConfig(); } else { $sPleskPass = \Aurora\System\Utils::DecryptValue($sPleskPass); } $this->oClient->setCredentials($sPleskUser, $sPleskPass); } /** * @return Module */ public static function getInstance() { return parent::getInstance(); } /** * @return Module */ public static function Decorator() { return parent::Decorator(); } /** * @return Settings */ public function getModuleSettings() { return $this->oModuleSettings; } /** * Creates account with credentials specified in registration form * * @param array $aArgs New account credentials. * @param mixed $mResult Is passed by reference. */ public function onAfterSignup($aArgs, &$mResult) { if (isset($aArgs['Login']) && isset($aArgs['Password']) && !empty(trim($aArgs['Password'])) && !empty(trim($aArgs['Login']))) { $sLogin = trim($aArgs['Login']); $sPassword = trim($aArgs['Password']); $sFriendlyName = isset($aArgs['Name']) ? trim($aArgs['Name']) : ''; $bSignMe = isset($aArgs['SignMe']) ? (bool) $aArgs['SignMe'] : false; $bPrevState = \Aurora\System\Api::skipCheckUserRole(true); [$sUsername, $sDomain] = explode("@", $sLogin); try { $mResult = $this->oClient->site()->get("name", $sDomain); } catch (\Exception $oException) { throw new \Aurora\System\Exceptions\ApiException(0, null, $oException->getMessage()); } if (is_object($mResult) && isset($mResult->id) && is_numeric($mResult->id)) { $iSiteId = intval($mResult->id); $aResult = array(); try { $mResult2 = $this->oClient->mail()->create($sUsername, $iSiteId, true, $sPassword); } catch(\Exception $oException) { throw new \Aurora\System\Exceptions\ApiException(0, $oException, $oException->getMessage()); } $iUserId = null; try { $iUserId = \Aurora\Modules\Core\Module::Decorator()->CreateUser(0, $sLogin); $oUser = \Aurora\System\Api::getUserById((int) $iUserId); $oAccount = \Aurora\Modules\Mail\Module::Decorator()->CreateAccount($oUser->Id, $sFriendlyName, $sLogin, $sLogin, $sPassword); if ($oAccount instanceof \Aurora\Modules\Mail\Models\MailAccount) { $iTime = $bSignMe ? 0 : time(); $sAuthToken = \Aurora\System\Api::UserSession()->Set( [ 'token' => 'auth', 'sign-me' => $bSignMe, 'id' => $oAccount->IdUser, 'account' => $oAccount->Id, 'account_type' => $oAccount->getName() ], $iTime ); $mResult = ['AuthToken' => $sAuthToken]; } } catch (\Exception $oException) { if ($oException instanceof \Aurora\Modules\Mail\Exceptions\Exception && $oException->getCode() === \Aurora\Modules\Mail\Enums\ErrorCodes::CannotLoginCredentialsIncorrect && is_int($iUserId) && ($iUserId > 0)) { \Aurora\Modules\Core\Module::Decorator()->DeleteUser($iUserId); } throw $oException; } } else { throw new \Aurora\System\Exceptions\ApiException(0, null, "Site not found"); } \Aurora\System\Api::skipCheckUserRole($bPrevState); } return true; } }