Browse Source

recuperar senha não usar apelido, mas senha que é único realmente

1.9
bruno 3 months ago
parent
commit
f275f6774c
  1. 18
      alterarsenha.php
  2. 4
      checaSessao.php
  3. 25
      recuperarsenha.php

18
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;
}
?>

4
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')) {

25
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);
}

Loading…
Cancel
Save