assign("agenteLogado", $agenteLogado); $smarty->assign("msgSenha", GetMsgSenha()); $nomeTpl = 'seguranca/trocaSenha.tpl'; $tpLayout = $_SESSION[SS_SENHA_DEF] ? 0 : 1; $idProg = 16; /* Mostrar formulário sem dados para manipular */ if ( viewFormTrocaSenha() ) { $jsStartup[] = $setFocus; GetTemplate($smarty, $nomeTpl); return; } /* 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 */ // $jsJQuery[] = "\$('#senhaNova').keyup(function(){somenteNumeros(this);}) "; // $jsJQuery[] = "\$('#senhaConf').keyup(function(){somenteNumeros(this);}) "; function Novateste() { return true; } 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); $result = pg_fetch_assoc($return); if(!$result['count']){ $query = "INSERT INTO pbx_usuarios_senha (id_usuario, senha) VALUES('$idUser', md5('$senha') );"; if(pg_query($dbcon, $query)){ return false; } } 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; } ?>