public function loginAction() { if (Zend_Auth::getInstance()->hasIdentity()) { } else { $this->_helper->layout->disableLayout(); } $form = new Default_Form_Login(); $this->view->form = $form; $this->_flashMessenger = $this->_helper->getHelper('FlashMessenger'); $this->view->messages = $this->_flashMessenger->getMessages(); //Verifica se existem dados de POST if ($this->getRequest()->getPost()) { $data = $this->getRequest()->getPost(); //Formulário corretamente preenchido? if ($form->isValid($data)) { $login = $form->getValue('login'); $senha = $form->getValue('senha'); $model_user = new Default_Model_Usuario(); $ativo = $model_user->buscarPorLoginUsuarios($login); if ($ativo['status_usuario'] == 1) { $senhaAlterada = $ativo['senha_alterada']; try { $auth = new Default_Model_Login(); $auth->login($login, $senha); if ($senhaAlterada == 0) { return $this->_helper->redirector->goToRoute(array('module' => 'admin', 'controller' => 'index', 'action' => 'index'), null, true); } else { return $this->_helper->redirector->goToRoute(array('module' => 'cadastros', 'controller' => 'usuarios', 'action' => 'alterar-senha-primeiro-acesso'), null, true); } } catch (Exception $e) { echo "<script type='text/javascript'>"; echo "alert('Combinação de Usuário + Senha digitada está incorreta!');"; echo "</script>"; } } else { echo "<script type='text/javascript'>"; echo "alert('O acesso a este usuário foi negado por o mesmo encontrar-se inativo em nosso sistema.');"; echo "</script>"; } } else { $form->populate($data); } } ## Log da transação ## // $log = new Acesso_Log; // $log->Log(); }
/** * Classe de Login que utiliza modelo de Usuarios. * * @package default * @author Marcos Amazonas */ public static function login($login, $senha) { $dbAdapter = Zend_Db_Table::getDefaultAdapter(); //Inicia o adaptador Zend_Auth para banco de dados $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $authAdapter->setTableName('usuario')->setIdentityColumn('login_usuario')->setCredentialColumn('senha_usuario')->setCredentialTreatment('MD5(?)'); //Define os dados para processar o login $authAdapter->setIdentity($login)->setCredential($senha); //Faz inner join dos dados do perfil no SELECT do Auth_Adapter $select = $authAdapter->getDbSelect(); $select->joinInner(array('p' => 'tb_perfil_usuario'), 'p.id = usuario.id_perfil', array('nome_perfil' => 'nome', 'id_perfil' => 'id')); //Efetua o login $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($authAdapter); //Verifica se o login foi efetuado com sucesso if ($result->isValid()) { //Recupera o objeto do usuário, sem a senha $info = $authAdapter->getResultRowObject(null, 'senha_usuario'); $model_usuario = new Default_Model_Usuario(); $model_usuario->setFullName($info->nome_usuario); $model_usuario->setUserName($info->login_usuario); $model_usuario->setIdUsuario($info->id); $model_usuario->setIdPerfil($info->id_perfil); $model_usuario->setNomePerfil($info->nome_perfil); $model_usuario->setRoleId($info->nome_perfil); // $usuario = $model_usuario->buscarPorLoginUsuarios($login); // $perfil = $model_usuario->buscarPerfil($usuario['id_perfil']); // $this->view->nome_perfil = $perfil; // // var_dump($perfil); // exit; // $model_usuario->setRoleId("admin"); // } else { // $model_usuario->setRoleId("guest"); // } //$model_usuario->setRoleId($info->nome_perfil); $storage = $auth->getStorage(); $storage->write($model_usuario); return true; } else { throw new Exception('Nome de usuário ou senha inválida.'); } }