<?php
	require $_SERVER["DOCUMENT_ROOT"].'/inc/conexao.php';
    require $_SERVER["DOCUMENT_ROOT"].'/inc/functions.php';

	// Recebe parâmetros GET
	$datetime = date('Y-m-d H:i:s');
	$urlbase = $_SERVER['SERVER_NAME'].$_SERVER ['REQUEST_URI'];
	$parts = parse_url($urlbase);
	parse_str($parts['query'], $query);
	$_GET = $query;
	$token = $_GET["token"];
	if($token == '' && isset($_SESSION["usuario"])){ $_GET["token"] = $_SESSION["usuario"]["api_token"]; $token = $_SESSION["usuario"]["api_token"]; }

	// Verifica type e permissões
	if(!isset($_GET["token"])){ $ret['error'] = 'Token inexistente ou invalido.'; $ret['status'] = 'error'; $ret['status_code'] = 'notfoundtoken'; finishJSONRequest($ret); }
	if($token == ''){ $ret['error'] = 'Efetue login em sua conta primeiramente.'; $ret['status'] = 'error'; $ret['status_code'] = 'notfoundtoken'; finishJSONRequest($ret); }

	// Pesquisa usuário
	$sql = $mysqli->query("SELECT usuario_id, usuario_senha, usuario_permissoes, usuario_nome, usuario_tipo FROM usuarios WHERE usuario_api_token = '$token'");
	if(mysqli_num_rows($sql) == 0 || !isset($_GET["token"]) || $_GET["token"] == ''){ $ret['error'] = 'TOKEN invalido.'; $ret['status'] = 'error'; $ret['status_code'] = 'notfoundtype'; finishJSONRequest($ret); }

	// Pega dados do usuario
	$u = $sql->fetch_assoc();
	$userid = $u["usuario_id"];
	$perms = explode('-', $u["usuario_permissoes"]);
	$senha_atual = $u["usuario_senha"];

	// Confere se possui permissões
	if(!in_array('16', $perms)){ $ret['error'] = 'Você não possui permissões suficientes para alterar senha.'; $ret['status'] = 'error'; $ret['status_code'] = 'invalidPerm'; finishJSONRequest($ret); }

	// Recebe variáveis
	$pass = $mysqli->escape_string(utf8_decode($_POST["pass"]));
	$pass = substr(sha1($pass), 5, -5);
	$npass = $mysqli->escape_string(utf8_decode($_POST["npass"]));
	$npass = substr(sha1($npass), 5, -5);

	if($pass <> $senha_atual){
		$ret['error'] = 'A senha atual digitada não confere.'; $ret['status'] = 'error'; $ret['status_code'] = 'invalidPerm'; finishJSONRequest($ret);
	}

	// Campos vazios
	if($_POST["npass"] == ''){ $ret['error'] = 'Você precisa informar a nova SENHA.'; $ret['status'] = 'error'; $ret['status_code'] = 'emptyField'; finishJSONRequest($ret); }

	// Insere usuário na grade
	$sql = $mysqli->query("UPDATE usuarios SET usuario_senha = '$npass' WHERE usuario_id = '$userid'");

	if($sql){

		$ret['success'] = 'Pronto! A senha foi alterada.';
		$ret['status'] = 'success';
		$ret['slug'] = $_SESSION["tipos_usuarios"][$_GET["user_type"]]["slug"];
		finishJSONRequest($ret);
	} else {
		$ret['error'] = 'Houve um erro ao cadastrar a senha. O sistema retornou: '.$mysqli->error.'.'; $ret['status'] = 'error'; $ret['status_code'] = 'databaseError'; finishJSONRequest($ret);
	}
?>