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