function autenticaUsuario($usuario, $senha) { include dirname(__FILE__) . "/conexao.php"; $senhamd5 = md5($senha); $senhaHash = password_hash($senha, PASSWORD_DEFAULT); //faz um teste de tentativas de acesso $nomeArquivo = $dir_tmp . "/a" . md5($usuario . "testeTentativas") . intval(time() / 1000); if (!file_exists($dir_tmp)) { return false; } if (file_exists($nomeArquivo)) { $tentativas = (int) file_get_contents($nomeArquivo); if ($tentativas > 3) { return "muitas tentativas"; } $tentativas = $tentativas + 1; file_put_contents($nomeArquivo, $tentativas); } else { file_put_contents($nomeArquivo, 1); } //verifica se o usuario esta cadastrado no ms_configura.php em $i3geomaster //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '******' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit; //exit; if (verificaMaster($usuario, $senha) == true) { $pa = pegaDados("select * from " . $esquemaadmin . "i3geousr_papelusuario ", $dbh, false); $op = pegadados("SELECT O.codigo FROM " . $esquemaadmin . "i3geousr_operacoes AS O", $dbh, false); $gr = pegadados("SELECT * from " . $esquemaadmin . "i3geousr_grupos ", $dbh, false); //var_dump($gr);exit; $operacoes = array(); foreach ($op as $o) { $operacoes[$o["codigo"]] = true; } $papeis = array(); foreach ($pa as $p) { $papeis[] = $p["id_papel"]; } $gruposusr = array(); foreach ($gr as $p) { $gruposusr[] = $p["id_grupo"]; } $master = array(); $master["id_usuario"] = "master"; $master["nome_usuario"] = "master"; $r = array("usuario" => $master, "papeis" => $papeis, "operacoes" => $operacoes, "gruposusr" => $gruposusr); $dbh = null; $dbhw = null; file_put_contents($nomeArquivo, 1); return $r; } else { //verifica se a senha e uma string ou pode ser um md5 $ok = false; $dados = array(); if (strlen($senha) == 32) { $dados = pegaDados("select id_usuario,nome_usuario from " . $esquemaadmin . "i3geousr_usuarios where login = '******' and senha = '{$senhamd5}' and ativo = 1", $dbh, false); } else { $dados = pegaDados("select id_usuario,nome_usuario from " . $esquemaadmin . "i3geousr_usuarios where login = '******' and (senha = '{$senhamd5}' or senha = '{$senha}') and ativo = 1", $dbh, false); } if (count($dados) > 0) { $ok = true; } //testa tambem com a nova forma de armazenamento de senha usando password_hash if ($ok == false) { $usuarios = pegaDados("select senha,id_usuario,nome_usuario from " . $esquemaadmin . "i3geousr_usuarios where login = '******' and ativo = 1", $dbh, false); foreach ($usuarios as $d) { if (password_verify($d["senha"], $senhaHash)) { $ok = true; $dados = array("id_usuario" => $d["id_usuario"], "nome_usuario" => $d["nome_usuario"]); } } $usuarios = null; } if ($ok == true) { $pa = pegaDados("select * from " . $esquemaadmin . "i3geousr_papelusuario where id_usuario = " . $dados[0]["id_usuario"], $dbh, false); $op = pegadados("SELECT O.codigo, PU.id_usuario FROM " . $esquemaadmin . "i3geousr_operacoes AS O JOIN " . $esquemaadmin . "i3geousr_operacoespapeis AS OP ON O.id_operacao = OP.id_operacao JOIN " . $esquemaadmin . "i3geousr_papelusuario AS PU ON OP.id_papel = PU.id_papel\tWHERE id_usuario = " . $dados[0]["id_usuario"], $dbh, false); $gr = pegadados("SELECT * from " . $esquemaadmin . "i3geousr_grupousuario where id_usuario = " . $dados[0]["id_usuario"], $dbh, false); $operacoes = array(); foreach ($op as $o) { $operacoes[$o["codigo"]] = true; } $papeis = array(); foreach ($pa as $p) { $papeis[] = $p["id_papel"]; } $gruposusr = array(); foreach ($gr as $p) { $gruposusr[] = $p["id_grupo"]; } $r = array("usuario" => $dados[0], "papeis" => $papeis, "operacoes" => $operacoes, "gruposusr" => $gruposusr); $dbh = null; $dbhw = null; file_put_contents($nomeArquivo, 1); return $r; } else { $dbh = null; $dbhw = null; return false; } } }
\t\t \t\t\t<label> \t\t \t\t\t\t<input type=checkbox name=permPastaI3geo /> Altera as permissoes da pasta {$locaplic} <br> \t\t\t\t\t</label> \t\t \t\t</div> \t\t\t</form> \t\t</div> \t\t<div class="col-lg-2 col-md-0"> \t\t</div> \t\t<script> \t\t\$.material.init(); \t\t</script> HTML; } exit; } else { $continua = verificaMaster($_POST["usuario"], $_POST["senha"], $i3geomaster); if ($continua == false) { echo <<<HTML \t\t\t\t<div class="alert alert-danger" role="alert"> \t\t\t\tUsuário não registrado em i3geo/ms_configura.php na variável i3geomaster \t\t\t\t</div> HTML; exit; } } error_reporting(0); $ip = "UNKNOWN"; if (getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP"); } else { if (getenv("HTTP_X_FORWARDED_FOR")) {