From f275f6774c8c900e72dbed171744afc459df44be Mon Sep 17 00:00:00 2001 From: bruno Date: Sun, 21 Jul 2024 13:47:04 -0400 Subject: [PATCH] =?UTF-8?q?recuperar=20senha=20n=C3=A3o=20usar=20apelido,?= =?UTF-8?q?=20mas=20senha=20que=20=C3=A9=20=C3=BAnico=20realmente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- alterarsenha.php | 18 +++++++++++++----- checaSessao.php | 4 ++-- recuperarsenha.php | 25 ++++++++++++++----------- 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/alterarsenha.php b/alterarsenha.php index 86bcba89..b016fd14 100644 --- a/alterarsenha.php +++ b/alterarsenha.php @@ -14,8 +14,9 @@ /** RECUPERA INFORMACOES DO USUARIO PELA SESSAO */ $usuarioId = $_SESSION['SSREcoveryPassword']['id']; - $apelido = $_SESSION['SSREcoveryPassword']['login']; + $email = $_SESSION['SSREcoveryPassword']['login']; + /* */ $senha = (substr($novaSenha, 0, 14)); $match = preg_match_all('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[$*&@#_!.%?])[0-9a-zA-Z$*&@#_!.%?]{8,}$/', $novaSenha); @@ -33,7 +34,7 @@ throw new Exception('Usuário não foi encontrado!'); } - if (changePassword($dbcon, $usuarioId, $apelido, $senha)) { + if (changePassword($dbcon, $usuarioId, $email, $senha)) { unset($_SESSION['SSREcoveryPassword']); header('Location: index.php'); } else { @@ -60,13 +61,20 @@ } function changePassword($dbcon, $idUser, $login, $senha) { - $query = "UPDATE pbx_usuarios SET senha = md5('$senha'), def_senha = 0, senha_ult_atualiza = 'now' WHERE id = '$idUser'; "; - $query .= "UPDATE pbx_controle_acesso SET acs_erro = 2 WHERE acs_login = '$login' AND acs_erro = 1; "; - $return = pg_query($dbcon, $query); + pg_prepare( $dbcon, "alterar_senha_query", "UPDATE pbx_usuarios SET senha = md5($1), def_senha = 0, senha_ult_atualiza = 'now' WHERE id = $2"); + $return = pg_execute($dbcon, "alterar_senha_query", array($senha, $idUser)); if (!$return) { return false; } + + pg_prepare($dbcon, "alterar_controle_acesso", "UPDATE pbx_controle_acesso SET acs_erro = 2 WHERE acs_login = $1 AND acs_erro = 1 "); + $return = pg_execute($dbcon, "alterar_controle_acesso", array($login)); + if (!$return) { + return false; + } + return true; + } ?> diff --git a/checaSessao.php b/checaSessao.php index a89b9198..13413b1c 100644 --- a/checaSessao.php +++ b/checaSessao.php @@ -43,9 +43,9 @@ if (($_GET['action'] == 'meeting')) { } if (isset($_GET['action']) && ($_GET['action'] == 'recovery_password')) { - include_once("recuperarsenha.php"); + include_once("recuperarsenha.php"); // manda o email com o link de acesso a troca de senha } else if (isset($_GET['action']) && ($_GET['action'] == 'change_password')) { - include_once("alterarsenha.php"); + include_once("alterarsenha.php"); // recebe a requisição com o link de acesso } if ((strtoupper($_SESSION["SSaut"]) == "OK" && $_GET['action'] === 'select_empresa')) { diff --git a/recuperarsenha.php b/recuperarsenha.php index fd28e749..91c38ba1 100644 --- a/recuperarsenha.php +++ b/recuperarsenha.php @@ -6,26 +6,29 @@ $email = isset($_POST['email']) ? $_POST['email'] : null; - try { if (isset($_POST['btEnviar'])) { - $config = GetEmail($dbcon); + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + throw new Exception("O email não é válido"); + } + + $config = GetEmailRecovery($dbcon); if (!$config) { throw new Exception("Nenhuma configuração foi feita para o envio de Recuperação"); } - $account = verificaEmail($dbcon, $email); + $account = verificaEmailRecovery($dbcon, $email); if(!$account){ throw new Exception("O email informado não foi encontrado!"); } $token = md5($account['id'] . $account['matricula'] . time()); - $_SESSION['SSREcoveryPassword'] = ['token' => $token, 'id' => $account['id'], 'login' => $account['apelido']]; + $_SESSION['SSREcoveryPassword'] = ['token' => $token, 'id' => $account['id'], 'login' => $account['email']]; $link = "http://" . $_SERVER['SERVER_NAME'] . "/index.php?action=change_password&token=" . $token; - if ($account && enviaEmail($email, $link, $config, $account)) { + if ($account && enviaEmailRecovery($email, $link, $config, $account)) { $jsStartup[] = "alert('Foi encaminhado o link para seu e-mail para a recuperação de senha!');"; } else { $jsStartup[] = "alert('Não foi possível enviar a senha de recuperação! Verifique seu e-mail digitado ou entre em contato com seu supervisor.');"; @@ -38,7 +41,7 @@ $smarty->display('recuperarsenha.tpl'); - function enviaEmail($email, $link, $dados, $account) { + function enviaEmailRecovery($email, $link, $dados, $account) { try { $mail = new PHPMailer(); @@ -68,22 +71,22 @@ return true; } - $erro = $mail->ErrorInfo; return false; } catch (Exception $ex) { return false; } } - function verificaEmail($dbcon, $email) { - $query = "SELECT * FROM pbx_usuarios WHERE email = '$email';"; + function verificaEmailRecovery($dbcon, $email) { + $query = "SELECT * FROM pbx_usuarios WHERE email = '$email'"; $result = pg_query($dbcon, $query); $res = pg_fetch_assoc($result); return $res; } - function GetEmail($dbcon) { - $query = "SELECT hosts, usuario, senha, porta FROM pbx_confmail;"; + function GetEmailRecovery($dbcon) { + /* org_id = 0 motivo estar no login ainda não fez login */ + $query = "SELECT hosts, usuario, senha, porta FROM pbx_confmail where org_id = 0"; $result = pg_query($dbcon, $query); return pg_fetch_assoc($result); }