✏️ 正在编辑: AuthController.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/controllers/AuthController.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php /** * Autenticação de usuários */ class AuthController extends Zend_Controller_Action { public function init() { $this->_helper->layout->setLayout('layout_login'); } public function loginAction() { if (Yuppie_Auth::hasIdentity()) { $this->_helper->redirector('index', 'index'); } $form = new Form_Login(); $request = $this->getRequest(); if( $request->isPost() ){ if( !$form->isValid($request->getPost()) ){ $this->_helper->json(['alert' => "Preencha os dados corretamente!"]); } $username = preg_replace(['/[\x00-\x1F\x7F]/u', "/\xE2\x80\x8B/"], '', strip_tags($request->getParam('usuario'))); $password = strip_tags($request->getParam('senha')); try { $this->_doAuthenticate($username, $password, $request->getParam('tipo_acesso')); } catch ( Zend_Auth_Adapter_Exception $e ) { $this->_helper->json(['error' => "Erro de acesso ao banco de dados"]); } catch( Zend_Db_Exception $e ){ $this->_helper->json(['alert' => 'Falha de comunicação com o banco de dados.']); } catch ( Exception $e ) { $this->_helper->json(['alert' => $e->getMessage()]); } } $this->view->form = $form; } /** * Authenticates (or tries to) the username/password * * @param string $username * @param string $password */ protected function _doAuthenticate($username, $password, $tipoAcesso) { $url = $this->_getParam('url', '/index'); switch ($tipoAcesso) { case 1: //corretor $corretor = new Model_Corretor(); $result = $corretor->autenticar($username, $password, "vw_corretores_entrada", "Corretor", true); if( Yuppie_Auth::getIdentity() ){ Yuppie_Auth::getIdentity()->senha_atualizada = $corretor->estaSenhaAtualizada(); } break; case 2: //gerente $gerente = new Model_Gerente(); $result = $gerente->autenticar($username, $password, "tb_gerentes", 'Gerente Regional', true); break; case 3: //supervisor $gerenteRota = new Model_GerenteRota(); $result = $gerenteRota->autenticar($username, $password, "tb_gerente_rota", "Supervisor", true); break; case 4: //afiliado $corretor = new Model_Corretor(); $result = $corretor->autenticar($username, $password, "vw_afiliados", "Afiliado", true); break; case 0: default: $usuario = new Model_Usuario(); $result = $usuario->autenticar($username, $password, "vw_usuarios"); $logout = $usuario->verificarTempoRetorno(); if ($logout) { Yuppie_Auth::clearIdentity(); $this->_helper->json([ 'alert' => 'Acesso bloqueado. O tempo determinado para a pausa ainda não foi concluído.' ]); } break; } if ($result) { $params = []; if(in_array(Yuppie_Auth::getIdentity()->grupo, array('Administradores', 'Sistema'))) { $resource = new Model_Resource(); $results = $resource->atualizarRecursos(); if ($results && $results['inserts'] || $results['updates']) { $params['info'] = 'Houve uma atualização na lista de recursos ' . 'do sistema.'; } } $params['url'] = $url; $acesso = new Model_DbTable_Acesso(); $acesso->registrar($tipoAcesso); $this->_helper->json($params); } else { $this->_helper->json([ 'alert' => 'Dados incorretos! Por favor, verifique seu usuário e senha.', 'reset' => true ]); } } public function logoutAction() { Yuppie_Auth::clearIdentity(); // Redirects back to the login screen $this->_helper->redirector('login'); } public function websocketAuthAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $usuario = Yuppie_Auth::getIdentity(); $notificacao = new Core_Notificacao_PushBrowser($usuario); $channels = $notificacao->getAllowedChannels(); if (count($channels)){ $status = 200; $json = [ "status" => "success", "storage" => [ "usuario" => $usuario->id, "assuntos_chamado" => $usuario->assuntos_chamado, "assuntos_proposta" => $usuario->assuntos_proposta, "assuntos_simulacao" => $usuario->assuntos_simulacao ], "channels" => json_encode($channels) ]; } else { $status = 401; $json = ["status" => "Not allowed"]; } $this->getResponse() ->setHttpResponseCode($status) ->setBody(json_encode($json)); } public function getUsuarioResetPasswordAction() { $request = $this->getRequest(); $tipoAcesso = $request->getParam('tipo'); $login = $request->getParam('login'); $modelPessoa = new Model_Pessoa(); $usuario = $modelPessoa->getUsuarioReset($tipoAcesso, $login); if ($usuario) { $this->_helper->json(['email' => $usuario['email'], 'id' => $usuario['id']]); } $this->_helper->json(['error' => 'O usuário inexistente ou não possui e-mail!']); } public function enviarLinkResetPasswordAction() { $request = $this->getRequest(); $tipo = $request->getParam('tipo'); $usuarioId = $request->getParam('usuarioId'); $modelPessoa = new Model_Pessoa(); $usuario = $modelPessoa->setarReset($tipo, $usuarioId); if (!empty($usuario['error'])) { $this->_helper->json($usuario); } try { $mail = new Core_Mail(); $assunto = 'Sistema Yuppie: Alteração de senha'; $dataAtual = Zend_Date::now()->get('dd/MM/yyyy'); $this->view->tipo_acesso = $tipo; $this->view->data_solicitacao = $dataAtual; $this->view->usuario = $usuario; $mail->setFrom('no-reply@yuppietech.com.br'); $mensagem = $this->view->render('usuario/requisicao-reset-senha.phtml'); $result = $mail->enviarMensagemHtml($usuario['nome'], $usuario['email'], $assunto, $mensagem); } catch ( Exception $e ) { $this->_helper->json(['error' => $e->getMessage()]); } if ($result['status']) { $this->_helper->json(['success' => "E-mail enviado para {$usuario['email']}. Válido até $dataAtual"]); } $this->_helper->json(['error' => 'Erro no processamento!']); } public function resetAction() { $this->_helper->layout->setLayout('layout_reset'); $request = $this->getRequest(); $tipo = $request->getParam('tipo_acesso'); $token = $request->getParam('token'); $form = new Form_Reset(); if ($request->isPost()) { if (!$form->isValid($request->getPost())) { $this->_helper->json(['error' => 'Verifique os dados inseridos, as senhas precisam ser iguais.']); } $modelPessoa = new Model_Pessoa(); $autenticacao = $modelPessoa->autenticarTokenReset($tipo, $token); if (!empty($autenticacao['alert'])) { $this->_helper->json($autenticacao); } $result = $modelPessoa->alterarSenha($tipo, $autenticacao, $request->getPost('senha')); if (!$result || $result['error']) { $this->_helper->json(['error' => $result['error']]); } if ($result) { $this->_helper->json(['success' => 'Senha alterada com sucesso.']); } } $this->view->form = $form; } }
💾 保存文件
← 返回文件管理器