forked from SimplesIP/pabx-app
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
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; |
|
} |
|
|
|
?>
|
|
|