/**
  * Efetua o login
  */
 public function postAction()
 {
     $oSessao = new Zend_Session_Namespace('captcha');
     $oForm = new Auth_Form_login_FormLogin();
     $aDados = $this->getRequest()->getParams();
     $sLogin = $this->getRequest()->getParam('login', -1);
     $sSenha = $this->getRequest()->getParam('senha', -1);
     if ($oForm->isValid($aDados)) {
         $oEntityManager = Zend_Registry::get('em');
         $oAuthAdapter = new Doctrine_Auth_Adapter($oEntityManager, 'Administrativo\\Usuario', 'login', 'senha');
         $oAuthAdapter->setIdentity($sLogin);
         $oAuthAdapter->setCredential($sSenha);
         $oAuth = Zend_Auth::getInstance();
         $iStatus = $oAuth->authenticate($oAuthAdapter)->getCode();
         switch ($iStatus) {
             case 1:
                 // Autenticacao Ok
                 $sLogin = $oAuth->getIdentity();
                 $oUser = Administrativo_Model_Usuario::getByAttribute('login', $sLogin);
                 if ($oUser->getHabilitado()) {
                     Zend_Auth::getInstance()->getStorage()->write(array('id' => $oUser->getId(), 'login' => $sLogin));
                     $aRetornoJson['status'] = TRUE;
                     $aRetornoJson['url'] = $this->view->baseUrl('/default/index');
                     $oSessao = new Zend_Session_Namespace('captcha');
                     $oSessao->unsetAll();
                 } else {
                     $aRetornoJson['status'] = FALSE;
                     $aRetornoJson['error'][] = $this->translate->_('Usuário não habilitado para acessar o sistema.');
                 }
                 break;
             case -1:
                 // Usuario invalido
             // Usuario invalido
             case -2:
                 // Usuario repetido
             // Usuario repetido
             case -3:
                 // Senha invalida
                 $oSessao->errors++;
                 $aRetornoJson['status'] = FALSE;
                 $aRetornoJson['error'][] = $this->translate->_('Usuário ou senha não conferem.');
                 break;
             default:
                 $oSessao->errors++;
                 $aRetornoJson['status'] = FALSE;
                 $aRetornoJson['error'][] = $this->translate->_('Ocorreu um erro no sistema.');
         }
     } else {
         $oSessao->errors++;
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.');
     }
     if ($oSessao->errors >= 3) {
         $aRetornoJson['url'] = 'index';
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Carrega a autenticação do usuario de acordo com o retorno da validação do certificado
  * 
  * @param string $sLoginUsuario
  * @throws Exception
  * @return boolean
  */
 public function autenticaUsuario($sLoginUsuario)
 {
     try {
         $oEntityManager = Zend_Registry::get('em');
         $oAuthAdapter = new Doctrine_Auth_Adapter($oEntityManager, 'Administrativo\\Usuario', 'login', 'senha');
         $oAuthAdapter->setIdentity($sLoginUsuario);
         $oAuthAdapter->setCredential('');
         $oAuth = Zend_Auth::getInstance();
         $iStatus = $oAuth->authenticate($oAuthAdapter)->getCode();
         if (in_array($iStatus, array(1, -3))) {
             $sLogin = $oAuth->getIdentity();
             $oUser = Administrativo_Model_Usuario::getByAttribute('login', $sLoginUsuario);
             if ($oUser && $oUser->getHabilitado()) {
                 Zend_Auth::getInstance()->getStorage()->write(array('id' => $oUser->getId(), 'login' => $sLoginUsuario));
             } else {
                 $this->oModeloImportacao->setMensagemErro('E157', 'Usuário não habilitado');
             }
         } else {
             $this->oModeloImportacao->setMensagemErro('E157', 'Usuário Inválido');
         }
         /**
          * Verifica se ocorreu algum erro no processamentos dos dados na importacao
          */
         if ($this->oModeloImportacao->getErro()) {
             return $this->oModeloImportacao->processaErroWebService(NULL);
         }
         /**
          * Reecreve os dados e permissões de sessão na ACL
          */
         new DBSeller_Acl_Setup(TRUE);
         /**
          * Verifica a permissão de execução da ação conforme liberação do usuário
          */
         $sAmbiente = Zend_Controller_Front::getInstance()->getRequest()->getActionName();
         if (!DBSeller_Plugin_Auth::checkPermission("webservice/{$sAmbiente}/recepcionar-lote-rps")) {
             return FALSE;
         }
         return TRUE;
     } catch (Exception $oErro) {
         throw new Exception($oErro->getMessage(), $oErro->getCode());
     }
 }