|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
$token = isset($_GET['token']) ? $_GET['token'] : null;
|
|
|
|
|
$novaSenha = isset($_POST['senhaNova']) ? $_POST['senhaNova'] : null;
|
|
|
|
|
$confirmaSenha = isset($_POST['senhaConf']) ? $_POST['senhaConf'] : null;
|
|
|
|
|
|
|
|
|
|
/** REQUEST PARA O FORM */
|
|
|
|
|
$setActPage = "index.php?action=change_password&token=$token";
|
|
|
|
|
|
|
|
|
|
/** VALIDA O TOKEN INFORMADO */
|
|
|
|
|
if ($_SESSION['SSREcoveryPassword']['token'] != $token || !isset($_SESSION['SSREcoveryPassword'])) {
|
|
|
|
|
header('Location: index.php');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** RECUPERA INFORMACOES DO USUARIO PELA SESSAO */
|
|
|
|
|
$usuarioId = $_SESSION['SSREcoveryPassword']['id'];
|
|
|
|
|
$apelido = $_SESSION['SSREcoveryPassword']['login'];
|
|
|
|
|
|
|
|
|
|
$senha = (substr($novaSenha, 0, 14));
|
|
|
|
|
$match = preg_match_all('/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[$*&@#_!.%?])[0-9a-zA-Z$*&@#_!.%?]{8,}$/', $novaSenha);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (isset($_POST['btAltSenha'])) {
|
|
|
|
|
if (empty($novaSenha) || !$match) {
|
|
|
|
|
throw new Exception('Informe no m<EFBFBD>nimo 8 caracteres, conforme as espec<EFBFBD>fica<EFBFBD><EFBFBD>es!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($novaSenha != $confirmaSenha) {
|
|
|
|
|
throw new Exception('As senhas informadas n<EFBFBD>o conferem!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!userExists($dbcon, $usuarioId)) {
|
|
|
|
|
throw new Exception('Usu<EFBFBD>rio n<EFBFBD>o foi encontrado!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (changePassword($dbcon, $usuarioId, $apelido, $senha)) {
|
|
|
|
|
unset($_SESSION['SSREcoveryPassword']);
|
|
|
|
|
header('Location: index.php');
|
|
|
|
|
} else {
|
|
|
|
|
throw new Exception('N<EFBFBD>o foi poss<EFBFBD>vel alterar a senha!');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$msg = $ex->getMessage();
|
|
|
|
|
$color = 'red';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$smarty->assign("msg", $msg);
|
|
|
|
|
$smarty->assign("color", $color);
|
|
|
|
|
$smarty->display('alterarsenha.tpl');
|
|
|
|
|
|
|
|
|
|
function userExists($dbcon, $idUser) {
|
|
|
|
|
$query = "SELECT count(*) FROM pbx_usuarios WHERE id = '$idUser';";
|
|
|
|
|
$return = pg_query($dbcon, $query);
|
|
|
|
|
$result = pg_fetch_assoc($return);
|
|
|
|
|
if (!$result['count']) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
if (!$return) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|