You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

72 lines
2.5 KiB

<?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ínimo 8 caracteres, conforme as específicações!');
}
if ($novaSenha != $confirmaSenha) {
throw new Exception('As senhas informadas não conferem!');
}
if (!userExists($dbcon, $usuarioId)) {
throw new Exception('Usuário não foi encontrado!');
}
if (changePassword($dbcon, $usuarioId, $apelido, $senha)) {
unset($_SESSION['SSREcoveryPassword']);
header('Location: index.php');
} else {
throw new Exception('Não foi possí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;
}
?>