/**
  * @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;
 }