@ -12,59 +12,75 @@ $nomeTpl = 'seguranca/trocaSenha.tpl';
$tpLayout = $_SESSION[SS_SENHA_DEF] ? 0 : 1;
$tpLayout = $_SESSION[SS_SENHA_DEF] ? 0 : 1;
$idProg = 16;
$idProg = 16;
if (!isset($_POST["senhaAtu"])) {
/* Mostrar formulário sem dados para manipular */
if ( viewFormTrocaSenha() ) {
$jsStartup[] = $setFocus;
$jsStartup[] = $setFocus;
GetTemplate($smarty, $nomeTpl); // or $siteError->GetPhpError("Autentica Usuario", "", "Erro ao chamar funcao smarty!");
GetTemplate($smarty, $nomeTpl);
} else {
return;
}
$login = substr(GetLogin(), 0, 20);
/* verifica se as especificações da senha */
$senha = (substr($_POST["senhaAtu"], 0, 14));
if ( protocolNewPassword( $_POST["senhaNova"] ) == false ) {
$jsStartup[] = "alert('A senha informada inválida, verifique as \"Especificações de Senha\"!');";
$match = preg_match_all('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[$*& @#_!.%?])[0-9a-zA-Z$*& @#_!.%?]{8,}$/', $_POST["senhaNova"]);
$jsStartup[] = $setFocus;
GetTemplate($smarty, $nomeTpl);
if (empty($_POST["senhaNova"]) || !$match) {
return;
$jsStartup[] = "alert('A senha informada inválida, verifique as \"Especificações de Senha\"!');";
} else if ($_POST["senhaNova"] != $_POST["senhaConf"]) {
$jsStartup[] = $setFocus;
$jsStartup[] = "alert('As senhas informadas não conferem!');";
} else if ($_POST["senhaNova"] != $_POST["senhaConf"]) {
$jsStartup[] = $setFocus;
$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;
}
}
GetTemplate($smarty, $nomeTpl);
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
* Captura tela de login
*/
*/
@ -75,6 +91,7 @@ function Novateste() {
}
}
function historyPassword($dbcon, $idUser, $senha){
function historyPassword($dbcon, $idUser, $senha){
$datareg = date('Y-m-d', strtotime('-6 month'));
$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'";
$query = "SELECT count(*) FROM pbx_usuarios_senha WHERE id_usuario = '$idUser' AND senha = md5('$senha') AND data_reg >= '$datareg'";
$return = pg_query($dbcon, $query);
$return = pg_query($dbcon, $query);
@ -89,4 +106,19 @@ function historyPassword($dbcon, $idUser, $senha){
return true;
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;
}
?>
?>