diff --git a/seguranca/trocaSenha.php b/seguranca/trocaSenha.php index a3047ea6..b4fc24db 100644 --- a/seguranca/trocaSenha.php +++ b/seguranca/trocaSenha.php @@ -12,59 +12,75 @@ $nomeTpl = 'seguranca/trocaSenha.tpl'; $tpLayout = $_SESSION[SS_SENHA_DEF] ? 0 : 1; $idProg = 16; -if (!isset($_POST["senhaAtu"])) { + +/* Mostrar formulário sem dados para manipular */ +if ( viewFormTrocaSenha() ) { $jsStartup[] = $setFocus; - GetTemplate($smarty, $nomeTpl); // or $siteError->GetPhpError("Autentica Usuario", "", "Erro ao chamar funcao smarty!"); -} else { + GetTemplate($smarty, $nomeTpl); + return; +} - $login = substr(GetLogin(), 0, 20); - $senha = (substr($_POST["senhaAtu"], 0, 14)); - - $match = preg_match_all('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[$*&@#_!.%?])[0-9a-zA-Z$*&@#_!.%?]{8,}$/', $_POST["senhaNova"]); - - if (empty($_POST["senhaNova"]) || !$match) { - $jsStartup[] = "alert('A senha informada inválida, verifique as \"Especificações de Senha\"!');"; - $jsStartup[] = $setFocus; - } else if ($_POST["senhaNova"] != $_POST["senhaConf"]) { - $jsStartup[] = "alert('As senhas informadas não conferem!');"; - $jsStartup[] = $setFocus; - } else { - $result = pg_query($dbcon, "select id from pbx_usuarios where check_vl = md5(lower('$login')) and senha = md5('$senha') "); - //// or //$siteError->GetPhpError("Autentica Usuario", "Não foi possível autenticar o usuário: " .$_POST["loginUser"]); - $row = pg_fetch_row($result); // or $siteError->GetPhpError("Autentica Usuario", "def", "Erro ao buscar resultado do banco na autenticacao de usuario."); - - $paswdInUsed = historyPassword($dbcon, $row[0], $_POST["senhaNova"]); - - if (!empty($row[0]) && !$paswdInUsed) { - $idUser = $row[0]; - $senha = $_POST["senhaNova"]; - - $query = "update pbx_usuarios set senha = md5('$senha'), def_senha = 0, senha_ult_atualiza = CURRENT_DATE where id = $idUser; "; - $result = pg_query($dbcon, $query); - //// or //$siteError->GetPhpError("Autentica Usuario", "Não foi possível autenticar o usuário: " .$_POST["loginUser"]); - if ($result) { - if ($_SESSION[SS_SENHA_DEF]) { - $_SESSION[SS_SENHA_DEF] = 0; - @header("Location: index.php?idProg=" . $_SESSION["SS_OLD_ID"]); - exit; - } - - $jsStartup[] = "alert('Senha alterada com Sucesso');"; - $GLOBALS["jsStartup"][] = "window.close();"; - } else - $jsStartup[] = "alert('Não foi possível alterar a senha');"; - $jsStartup[] = $setFocus; - //registra o login corrente para registrar log de erros do usuario - //$siteError->SetLogin(GetLogin()); - } else { - // if(!$siteError->GetNumError()) - $jsStartup[] = "alert('Usuário/Senha inválidos ou já foi utilizada recentemente!');"; - $jsStartup[] = $setFocus; - } - } +/* verifica se as especificações da senha */ +if ( protocolNewPassword( $_POST["senhaNova"] ) == false ) { + $jsStartup[] = "alert('A senha informada inválida, verifique as \"Especificações de Senha\"!');"; + $jsStartup[] = $setFocus; + GetTemplate($smarty, $nomeTpl); + return; +} else if ($_POST["senhaNova"] != $_POST["senhaConf"]) { + $jsStartup[] = "alert('As senhas informadas não conferem!');"; + $jsStartup[] = $setFocus; GetTemplate($smarty, $nomeTpl); + return; } + +$login = substr(GetLogin(), 0, 20); +$senha = (substr($_POST["senhaAtu"], 0, 14)); + +/* verifica a senha atual é correta */ +$result = pg_query($dbcon, "select id from pbx_usuarios where check_vl = md5(lower('$login')) and senha = md5('$senha') "); +$row = pg_fetch_row($result); +if(empty($row[0])){ + $jsStartup[] = "alert('Senha atual inválida');"; + $jsStartup[] = $setFocus; + GetTemplate($smarty, $nomeTpl); + return; +} + +/* Verifica se essa senha já foi usada */ +if( historyPassword($dbcon, $row[0], $_POST["senhaNova"])) { + $jsStartup[] = "alert('Usuário/Senha inválidos ou já foi utilizada recentemente!');"; + $jsStartup[] = $setFocus; + GetTemplate($smarty, $nomeTpl); + return; +} + + +$idUser = $row[0]; +$senha = $_POST["senhaNova"]; + +/* Update senha do usuário */ +$query = "update pbx_usuarios set senha = md5('$senha'), def_senha = 0, senha_ult_atualiza = CURRENT_DATE where id = $idUser; "; +$result = pg_query($dbcon, $query); +if ($result) { + if ($_SESSION[SS_SENHA_DEF]) { + $_SESSION[SS_SENHA_DEF] = 0; + @header("Location: index.php?idProg=" . $_SESSION["SS_OLD_ID"]); + exit; + } + + $jsStartup[] = "alert('Senha alterada com Sucesso');"; + $GLOBALS["jsStartup"][] = "window.close();"; +} else { + $jsStartup[] = "alert('Não foi possível alterar a senha');"; + $jsStartup[] = $setFocus; +} +GetTemplate($smarty, $nomeTpl); +return; + + + + /** * Captura tela de login */ @@ -75,6 +91,7 @@ function Novateste() { } function historyPassword($dbcon, $idUser, $senha){ + $datareg = date('Y-m-d', strtotime('-6 month')); $query = "SELECT count(*) FROM pbx_usuarios_senha WHERE id_usuario = '$idUser' AND senha = md5('$senha') AND data_reg >= '$datareg'"; $return = pg_query($dbcon, $query); @@ -89,4 +106,19 @@ function historyPassword($dbcon, $idUser, $senha){ return true; } + +function viewFormTrocaSenha(){ + return !isset($_POST["senhaAtu"]) ? true : false; +} + + +function protocolNewPassword( $password ){ + + $match = preg_match_all('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[$*&@#_!.%?])[0-9a-zA-Z$*&@#_!.%?]{8,}$/', $password); + + return $match; +} + + + ?>