/** * Tela inicial */ public function indexAction() { $sBusca = $this->getRequest()->getParam('busca'); $oPaginatorAdapter = new DBSeller_Controller_Paginator(Administrativo_Model_Usuario::getQuery(), 'Administrativo_Model_Usuario', 'Administrativo\\Usuario'); $sWhere = ' 1 = 1 '; if ($sBusca != '') { $sBuscaLower = mb_strtolower($sBusca, 'UTF-8'); $sWhere .= " AND ( "; $sWhere .= " LOWER(e.nome) LIKE '%{$sBuscaLower}%' OR "; $sWhere .= " LOWER(e.login) LIKE '%{$sBuscaLower}%' OR "; $sWhere .= " LOWER(e.email) LIKE '%{$sBuscaLower}%' "; $sWhere .= " ) "; } $oUsuario = $this->view->user; // Se usuario nao for administrador if (!$oUsuario->getAdministrativo()) { // Se não for do tipo Fiscal e com perfil de Fiscal ou Tomador if ($oUsuario->getTipo() != 3 && !in_array($this->view->user->getPerfil()->getId(), array(4, 5))) { $sWhere .= " AND e.cnpj = '{$this->view->user->getCnpj()}'"; } else { if ($this->view->user->getPerfil()->getId() == 4) { // Se não for usuário de perfil Tomador $sWhere .= " AND e.id = '{$this->view->user->getId()}'"; } else { // Se for usuário de perfil Fiscal $sWhere .= " AND (e.administrativo IS NULL OR e.administrativo = false)"; } } } $oPaginatorAdapter->where($sWhere); $oUsuarios = new Zend_Paginator($oPaginatorAdapter); $oUsuarios->setItemCountPerPage(10); $oUsuarios->setCurrentPageNumber($this->getRequest()->getParam('page')); $this->view->usuarios = $oUsuarios; $this->view->formBusca = $this->formBusca($sBusca); $this->view->busca = $this->getRequest()->getParam('busca'); }
/** * Cria a Senha e Atualiza o os dados dado usuário */ public function recuperarSenhaPostAction() { $oRequest = $this->getRequest(); $aRetornoJson = array(); $aRetornoJson['status'] = TRUE; $aRetornoJson['message'] = ''; $oDoctrine = Zend_Registry::get('em'); try { $oDoctrine->getConnection()->beginTransaction(); if ($oRequest->isPost() || $oRequest->isGet()) { $oForm = new Auth_Form_RecuperarSenha(); if ($oRequest->senha != $oRequest->senharepetida) { $aRetornoJson['fields'] = array('senha', 'senharepetida'); throw new Exception($this->translate->_('As senhas informadas não correspondem.')); } if (!$oForm->isValid($oRequest->getParams())) { $aRetornoJson['fields'] = array_keys($oForm->getMessages()); throw new Exception($this->translate->_('Preencha os dados corretamente.')); } /** * Buscamos o usuário pelo email */ $oQueryAtivos = Administrativo_Model_Usuario::getQuery(); $oQueryAtivos->select('e'); $oQueryAtivos->from('\\Administrativo\\Usuario', "e"); $oQueryAtivos->where("e.email = '{$oForm->email->getValue()}' and e.habilitado = true"); $aEntitiesUsuarios = $oQueryAtivos->getQuery()->getResult(); if (count($aEntitiesUsuarios) != 1) { throw new Exception($this->translate->_('Email informado não é um cadastro válido.')); } $oUsuario = new Administrativo_Model_Usuario($aEntitiesUsuarios[0]); /** * Recriamos o hash do usuario. caso nao seja o mesmo enviado, negamos a troca de senha */ $sHashUsuario = $oUsuario->criarHash(); if ($sHashUsuario != $oRequest->getParam('hash')) { throw new Exception($this->translate->_('Código de verificação informado é inválido.')); } $oUsuario->setSenha($oRequest->getParam('senha')); $oUsuario->persist(); $oDoctrine->getConnection()->commit(); $aRetornoJson['success'] = $this->translate->_('Senha alterada com sucesso.'); $aRetornoJson['login'] = $oUsuario->getLogin(); $aRetornoJson['url'] = $this->view->baseUrl('/auth/login'); } } catch (Exception $eErro) { $oDoctrine->getConnection()->rollback(); $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $eErro->getMessage(); } echo $this->getHelper('json')->sendJson($aRetornoJson); }