/** * @param string $sEmail * @param string $sLogin * @param string $sPassword * @param string $sSignMeToken = '' * @param bool $bThrowProvideException = false * * @return \RainLoop\Model\Account|null */ public function LoginProvide($sEmail, $sLogin, $sPassword, $sSignMeToken = '', $bThrowProvideException = false) { $oAccount = null; if (0 < \strlen($sEmail) && 0 < \strlen($sLogin) && 0 < \strlen($sPassword)) { $oDomain = $this->DomainProvider()->Load(\MailSo\Base\Utils::GetDomainFromEmail($sEmail), true); if ($oDomain instanceof \RainLoop\Model\Domain) { if ($oDomain->ValidateWhiteList($sEmail, $sLogin)) { $oAccount = \RainLoop\Model\Account::NewInstance($sEmail, $sLogin, $sPassword, $oDomain, $sSignMeToken); $this->Plugins()->RunHook('filter.acount', array(&$oAccount)); if ($bThrowProvideException && !$oAccount instanceof \RainLoop\Model\Account) { throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::AuthError); } } else { if ($bThrowProvideException) { throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::AccountNotAllowed); } } } else { if ($bThrowProvideException) { throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::DomainNotAllowed); } } } return $oAccount; }