From 5d0bfd86e8283d9069b9aef732e6c080ce4eaaa8 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sun, 24 Sep 2017 19:27:08 -0300 Subject: [PATCH] Remoção do programa admin/php/login.php em favor de admin1/php/login.php --- admin/admin.db | Bin 340992 -> 0 bytes admin/php/admin.php | 2 +- admin/php/login.php | 405 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- admin/php/xxxlogin.php | 406 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ admin1/php/funcoesAdmin.php | 2 +- admin1/php/login.php | 366 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ classesphp/funcoes_gerais.php | 8 ++++---- classesphp/mapa_controle.php | 2 ++ classesphp/sani_request.php | 1 + css/i3geo7.css.php | 0 ferramentas/animagif/manutencao.php | 2 +- ferramentas/editorgm/editorgm_compacto.js | 0 ferramentas/editorol/editorol_compacto.js | 0 ferramentas/editortema/exec.php | 2 +- ferramentas/loginusuario/index.js | 6 +++--- ferramentas/metaestat/templates/lib/dadosmapa.php | 2 +- ferramentas/navegapostgis/exec.php | 2 +- ferramentas/storymap/manutencao.php | 2 +- ferramentas/tme/manutencao.php | 2 +- init/login.php | 2 +- js/compactados/ajuda_compacto.js | 0 js/compactados/analise_compacto.js | 0 js/compactados/arvoredecamadas_compacto.js | 0 js/compactados/arvoredetemas_compacto.js | 0 js/compactados/base64_compacto.js | 0 js/compactados/busca_compacto.js | 0 js/compactados/caixaDeFerramentas_compacto.js | 0 js/compactados/calculo_compacto.js | 0 js/compactados/catalogoDir_compacto.js | 0 js/compactados/catalogoEstrelas_compacto.js | 0 js/compactados/catalogoInde_compacto.js | 0 js/compactados/catalogoMapas_compacto.js | 0 js/compactados/catalogoMenus_compacto.js | 0 js/compactados/catalogoMetaestat_compacto.js | 0 js/compactados/catalogoOgc_compacto.js | 0 js/compactados/catalogoRegioes_compacto.js | 0 js/compactados/catalogoSistemas_compacto.js | 0 js/compactados/configura_compacto.js | 0 js/compactados/coordenadas_compacto.js | 0 js/compactados/desenho_compacto.js | 0 js/compactados/dicionario_ajuda_compacto.js | 0 js/compactados/dicionario_compacto.js | 0 js/compactados/editor_compacto.js | 0 js/compactados/eventos_compacto.js | 0 js/compactados/guias_compacto.js | 0 js/compactados/idioma_compacto.js | 0 js/compactados/ini_i3geo_compacto.js | 0 js/compactados/interface_compacto.js | 0 js/compactados/janela_compacto.js | 0 js/compactados/legenda_compacto.js | 0 js/compactados/login_compacto.js | 0 js/compactados/mapa_compacto.js | 0 js/compactados/maparef_compacto.js | 0 js/compactados/marcador_compacto.js | 0 js/compactados/mustache.js | 0 js/compactados/navega_compacto.js | 0 js/compactados/php_compacto.js | 0 js/compactados/plugini3geo_compacto.js | 0 js/compactados/proj4js.js | 0 js/compactados/social_compacto.js | 0 js/compactados/tema_compacto.js | 0 js/compactados/util_compacto.js | 0 js/compactados/wicket.js | 0 js/i3geo_tudo_compacto7.js.php | 0 js/login.js | 4 ++-- ms_criamapa.php | 36 +++++------------------------------- pacotes/cpaint/cpaint2_compacto.inc.js | 0 pacotes/mobileesp/mdetect_compacto.js | 0 pacotes/yui290/build/carousel/carousel_compacto.js | 0 pacotes/yui290/build/container/container_compacto.js | 0 pacotes/yui290/build/container/container_core_compacto.js | 0 pacotes/yui290/build/resize/resize_compacto.js | 0 pacotes/yui290/build/treeview/treeview_compacto.js | 0 pacotes/yui290/build/utilities/utilities_compacto.js | 0 74 files changed, 798 insertions(+), 454 deletions(-) delete mode 100755 admin/php/login.php create mode 100755 admin/php/xxxlogin.php create mode 100755 admin1/php/login.php mode change 100644 => 100755 css/i3geo7.css.php mode change 100644 => 100755 ferramentas/editorgm/editorgm_compacto.js mode change 100644 => 100755 ferramentas/editorol/editorol_compacto.js mode change 100644 => 100755 js/compactados/ajuda_compacto.js mode change 100644 => 100755 js/compactados/analise_compacto.js mode change 100644 => 100755 js/compactados/arvoredecamadas_compacto.js mode change 100644 => 100755 js/compactados/arvoredetemas_compacto.js mode change 100644 => 100755 js/compactados/base64_compacto.js mode change 100644 => 100755 js/compactados/busca_compacto.js mode change 100644 => 100755 js/compactados/caixaDeFerramentas_compacto.js mode change 100644 => 100755 js/compactados/calculo_compacto.js mode change 100644 => 100755 js/compactados/catalogoDir_compacto.js mode change 100644 => 100755 js/compactados/catalogoEstrelas_compacto.js mode change 100644 => 100755 js/compactados/catalogoInde_compacto.js mode change 100644 => 100755 js/compactados/catalogoMapas_compacto.js mode change 100644 => 100755 js/compactados/catalogoMenus_compacto.js mode change 100644 => 100755 js/compactados/catalogoMetaestat_compacto.js mode change 100644 => 100755 js/compactados/catalogoOgc_compacto.js mode change 100644 => 100755 js/compactados/catalogoRegioes_compacto.js mode change 100644 => 100755 js/compactados/catalogoSistemas_compacto.js mode change 100644 => 100755 js/compactados/configura_compacto.js mode change 100644 => 100755 js/compactados/coordenadas_compacto.js mode change 100644 => 100755 js/compactados/desenho_compacto.js mode change 100644 => 100755 js/compactados/dicionario_ajuda_compacto.js mode change 100644 => 100755 js/compactados/dicionario_compacto.js mode change 100644 => 100755 js/compactados/editor_compacto.js mode change 100644 => 100755 js/compactados/eventos_compacto.js mode change 100644 => 100755 js/compactados/guias_compacto.js mode change 100644 => 100755 js/compactados/idioma_compacto.js mode change 100644 => 100755 js/compactados/ini_i3geo_compacto.js mode change 100644 => 100755 js/compactados/interface_compacto.js mode change 100644 => 100755 js/compactados/janela_compacto.js mode change 100644 => 100755 js/compactados/legenda_compacto.js mode change 100644 => 100755 js/compactados/login_compacto.js mode change 100644 => 100755 js/compactados/mapa_compacto.js mode change 100644 => 100755 js/compactados/maparef_compacto.js mode change 100644 => 100755 js/compactados/marcador_compacto.js mode change 100644 => 100755 js/compactados/mustache.js mode change 100644 => 100755 js/compactados/navega_compacto.js mode change 100644 => 100755 js/compactados/php_compacto.js mode change 100644 => 100755 js/compactados/plugini3geo_compacto.js mode change 100644 => 100755 js/compactados/proj4js.js mode change 100644 => 100755 js/compactados/social_compacto.js mode change 100644 => 100755 js/compactados/tema_compacto.js mode change 100644 => 100755 js/compactados/util_compacto.js mode change 100644 => 100755 js/compactados/wicket.js mode change 100644 => 100755 js/i3geo_tudo_compacto7.js.php mode change 100644 => 100755 pacotes/cpaint/cpaint2_compacto.inc.js mode change 100644 => 100755 pacotes/mobileesp/mdetect_compacto.js mode change 100644 => 100755 pacotes/yui290/build/carousel/carousel_compacto.js mode change 100644 => 100755 pacotes/yui290/build/container/container_compacto.js mode change 100644 => 100755 pacotes/yui290/build/container/container_core_compacto.js mode change 100644 => 100755 pacotes/yui290/build/resize/resize_compacto.js mode change 100644 => 100755 pacotes/yui290/build/treeview/treeview_compacto.js mode change 100644 => 100755 pacotes/yui290/build/utilities/utilities_compacto.js diff --git a/admin/admin.db b/admin/admin.db index b9553b5..877c1aa 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/admin.php b/admin/php/admin.php index 376ee76..f05e8b4 100755 --- a/admin/php/admin.php +++ b/admin/php/admin.php @@ -194,7 +194,7 @@ function pegaDados($sql,$dbh="",$close=true) $resultado = array(); //is_string para efeitos de compatibilidade if($dbh == "" || is_string($dbh)){ - include(dirname(__FILE__)."/../adin1/php/conexao.php"); + include(dirname(__FILE__)."/../../admin1/php/conexao.php"); } error_reporting(0); //$dbh deve ser definido com somente leitura, mas por prevencao: diff --git a/admin/php/login.php b/admin/php/login.php deleted file mode 100755 index 4e21421..0000000 --- a/admin/php/login.php +++ /dev/null @@ -1,405 +0,0 @@ -session_id(),"nome"=>$teste["usuario"]["nome_usuario"],"editor"=>$editor); - cpjson($retorno); - } - else{ - logoutUsuario(); - cpjson("logout"); - } - break; - /* - Valor: VALIDAOPERACAOUSUARIO - - Verifica se um usuario pode executar uma operacao - - Para que o usuario possa executar a operacao, o papel ao qual ele pertence deve estar registrado em operacoespaeis no banco de administracao - - Se $operacao for vazio, e retornado "sim", o que permite que a verificacao apenas confirme que o login esta correto na sessao - - Paremeter: - - $operacao - operacao que sera verificada - */ - case "VALIDAOPERACAOSESSAO": - $retorno = "nao"; - if($_GET["operacao"] == ""){ - $retorno = "sim"; - } - else{ - if(verificaOperacaoSessao($_GET["operacao"]) == true){ - $retorno = "sim"; - } - else{ - //logoutUsuario(); - $retorno = "naopermitido"; - } - } - cpjson($retorno); - break; - /* - Valor: RECUPERARSENHA - - Cria uma nova senha para um usuario enviando-a por e-mailo - - Paremeter: - - $usuario - */ - case "RECUPERARSENHA": - $retorno = false; - if(!empty($_POST["usuario"])){ - $retorno = recuperarSenha($_POST["usuario"]); - } - cpjson($retorno); - break; - /* - Valor: ALTERARSENHA - - Altera a senha de um usuario - - Paremeter: - - $usuario - - $novasenha - */ - case "ALTERARSENHA": - $retorno = false; - if(!empty($_POST["usuario"])){ - $retorno = alterarSenha($_POST["usuario"],$_POST["novaSenha"]); - } - cpjson($retorno); - break; -} -function alterarSenha($usuario,$novaSenha){ - include(dirname(__FILE__)."/conexao.php"); - $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where senha = '".md5($_SESSION["senha"])."' and login = '$usuario' and ativo = 1",$locaplic); - if(count($dados) > 0){ - $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'"); - $_SESSION["senha"] = $novaSenha; - $to = $dados[0]["email"]; - $subject = 'nova senha i3geo'; - $message = "Sua senha foi alterada"; - mail($to, $subject, $message); - return true; - } - else{ - return false; - } -} -function recuperarSenha($usuario){ - include(dirname(__FILE__)."/conexao.php"); - $novaSenha = rand(9000,1000000); - $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$locaplic); - if(count($dados) > 0){ - $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'"); - $to = $dados[0]["email"]; - $subject = 'nova senha i3geo'; - $message = $novaSenha; - mail($to, $subject, $message); - return true; - } - else{ - return false; - } -} -// -//verifica se um determinado papel esta registrado na variavel SESSION -// -function verificaPapelSessao($id_papel){ - $resultado = false; - if(validaSessao()){ - foreach($_SESSION["papeis"] as $p){ - if($p["id_papel"] == 1 || $p["id_papel"] == $id_papel){ - return true; - } - } - } - return $resultado; -} -// -//verifica se uma determinada operacao esta registrada na variavel SESSION -// -function verificaOperacaoSessao($operacao){ - $resultado = false; - //a validacao consulta $_SESSION, que e definida no login - if(validaSessao()){ - //verifica se e administrador, caso positivo, permite qq operacao - foreach($_SESSION["papeis"] as $p){ - if($p == 1){ - return true; - } - } - if(!empty($_SESSION["operacoes"][$operacao])){ - $resultado = true; - } - } - return $resultado; -} -// -//verifica se o usuario esta logado -// -function validaSessao(){ - $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT']; - if($_SESSION['fingerprint'] != md5($fingerprint . session_id())){ - return false; - } - if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){ - return false; - } - return true; -} -// -//faz a autenticacao de um usuario baseado no login e senha -//registra as operacoes, papeis e grupos do usuario na SESSION -// -function autenticaUsuario($usuario,$senha){ - include(dirname(__FILE__)."/conexao.php"); - error_reporting(0); - $senhamd5 = md5($senha); - if(function_exists("password_hash")){ - $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 = '$usuario' 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); - $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papeis ",$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(); - //por causa das versoes antigas do PHP - if(strlen($senha) == 32 || !function_exists("password_hash") ){ - $dados = pegaDados("select senha,login,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$dbh,false); - if(count($dados) == 1 && $dados[0]["senha"] == $senhamd5 && $dados[0]["login"] == $usuario){ - $ok = true; - } - } - else{ - $usuarios = pegaDados("select senha,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$dbh,false); - if (count($usuarios) == 1 && password_verify($senha,$usuarios[0]["senha"])){ - $ok = true; - $dados[] = array("id_usuario"=>$usuarios[0]["id_usuario"],"nome_usuario"=>$usuarios[0]["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 WHERE 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; - } - } -} -// -//faz o logout do usuario destruindo os cookies e session -// -function logoutUsuario(){ - $_COOKIE = array(); - $_SESSION = array(); - if(session_status() == PHP_SESSION_ACTIVE){ - session_destroy(); - } -} -?> diff --git a/admin/php/xxxlogin.php b/admin/php/xxxlogin.php new file mode 100755 index 0000000..ca65178 --- /dev/null +++ b/admin/php/xxxlogin.php @@ -0,0 +1,406 @@ +session_id(),"nome"=>$teste["usuario"]["nome_usuario"],"editor"=>$editor); + cpjson($retorno); + } + else{ + logoutUsuario(); + cpjson("logout"); + } + break; + /* + Valor: VALIDAOPERACAOUSUARIO + + Verifica se um usuario pode executar uma operacao + + Para que o usuario possa executar a operacao, o papel ao qual ele pertence deve estar registrado em operacoespaeis no banco de administracao + + Se $operacao for vazio, e retornado "sim", o que permite que a verificacao apenas confirme que o login esta correto na sessao + + Paremeter: + + $operacao - operacao que sera verificada + */ + case "VALIDAOPERACAOSESSAO": + $retorno = "nao"; + if($_GET["operacao"] == ""){ + $retorno = "sim"; + } + else{ + if(verificaOperacaoSessao($_GET["operacao"]) == true){ + $retorno = "sim"; + } + else{ + //logoutUsuario(); + $retorno = "naopermitido"; + } + } + cpjson($retorno); + break; + /* + Valor: RECUPERARSENHA + + Cria uma nova senha para um usuario enviando-a por e-mailo + + Paremeter: + + $usuario + */ + case "RECUPERARSENHA": + $retorno = false; + if(!empty($_POST["usuario"])){ + $retorno = recuperarSenha($_POST["usuario"]); + } + cpjson($retorno); + break; + /* + Valor: ALTERARSENHA + + Altera a senha de um usuario + + Paremeter: + + $usuario + + $novasenha + */ + case "ALTERARSENHA": + $retorno = false; + if(!empty($_POST["usuario"])){ + $retorno = alterarSenha($_POST["usuario"],$_POST["novaSenha"]); + } + cpjson($retorno); + break; +} +function alterarSenha($usuario,$novaSenha){ + include(dirname(__FILE__)."/conexao.php"); + $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where senha = '".md5($_SESSION["senha"])."' and login = '$usuario' and ativo = 1",$locaplic); + if(count($dados) > 0){ + $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'"); + $_SESSION["senha"] = $novaSenha; + $to = $dados[0]["email"]; + $subject = 'nova senha i3geo'; + $message = "Sua senha foi alterada"; + mail($to, $subject, $message); + return true; + } + else{ + return false; + } +} +function recuperarSenha($usuario){ + include(dirname(__FILE__)."/conexao.php"); + $novaSenha = rand(9000,1000000); + $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$locaplic); + if(count($dados) > 0){ + $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'"); + $to = $dados[0]["email"]; + $subject = 'nova senha i3geo'; + $message = $novaSenha; + mail($to, $subject, $message); + return true; + } + else{ + return false; + } +} +// +//verifica se um determinado papel esta registrado na variavel SESSION +// +function verificaPapelSessao($id_papel){ + $resultado = false; + if(validaSessao()){ + foreach($_SESSION["papeis"] as $p){ + if($p["id_papel"] == 1 || $p["id_papel"] == $id_papel){ + return true; + } + } + } + return $resultado; +} +// +//verifica se uma determinada operacao esta registrada na variavel SESSION +// +function verificaOperacaoSessao($operacao){ + $resultado = false; + //a validacao consulta $_SESSION, que e definida no login + if(validaSessao()){ + //verifica se e administrador, caso positivo, permite qq operacao + foreach($_SESSION["papeis"] as $p){ + if($p == 1){ + return true; + } + } + if(!empty($_SESSION["operacoes"][$operacao])){ + $resultado = true; + } + } + return $resultado; +} +// +//verifica se o usuario esta logado +// +function validaSessao(){ + $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT']; + if($_SESSION['fingerprint'] != md5($fingerprint . session_id())){ + return false; + } + if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){ + return false; + } + return true; +} +// +//faz a autenticacao de um usuario baseado no login e senha +//registra as operacoes, papeis e grupos do usuario na SESSION +// +function autenticaUsuario($usuario,$senha){ + include(dirname(__FILE__)."/conexao.php"); + error_reporting(0); + $senhamd5 = md5($senha); + if(function_exists("password_hash")){ + $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 = '$usuario' 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); + $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papeis ",$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(); + //por causa das versoes antigas do PHP + if(strlen($senha) == 32 || !function_exists("password_hash") ){ + $dados = pegaDados("select senha,login,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$dbh,false); + if(count($dados) == 1 && $dados[0]["senha"] == $senhamd5 && $dados[0]["login"] == $usuario){ + $ok = true; + } + } + else{ + $usuarios = pegaDados("select senha,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$dbh,false); + if (count($usuarios) == 1 && password_verify($senha,$usuarios[0]["senha"])){ + $ok = true; + $dados[] = array("id_usuario"=>$usuarios[0]["id_usuario"],"nome_usuario"=>$usuarios[0]["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 WHERE 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; + } + } +} +// +//faz o logout do usuario destruindo os cookies e session +// +function logoutUsuario(){ + $_COOKIE = array(); + $_SESSION = array(); + if(session_status() == PHP_SESSION_ACTIVE){ + session_destroy(); + } +} +?> diff --git a/admin1/php/funcoesAdmin.php b/admin1/php/funcoesAdmin.php index e95324a..b629f6a 100755 --- a/admin1/php/funcoesAdmin.php +++ b/admin1/php/funcoesAdmin.php @@ -439,7 +439,7 @@ senha {string} i3geomaster {array} - variável existente no ms_configura.php com o cadastro de usuários masters */ function verificaMaster($usuario,$senha,$i3geomaster){ - foreach($i3geomaster as $teste){ + foreach($i3geomaster as $teste){ if(!empty($usuario) && !empty($senha) && $teste["usuario"] == $usuario && $teste["senha"] == $senha){ return true; } diff --git a/admin1/php/login.php b/admin1/php/login.php new file mode 100755 index 0000000..2ca1362 --- /dev/null +++ b/admin1/php/login.php @@ -0,0 +1,366 @@ +session_id(),"nome"=>$teste["usuario"]["nome_usuario"],"editor"=>$editor); + cpjson($retorno); + } + else{ + logoutUsuario(); + cpjson("logout"); + } + break; + /* + Valor: VALIDAOPERACAOUSUARIO + + Verifica se um usuario pode executar uma operacao + + Para que o usuario possa executar a operacao, o papel ao qual ele pertence deve estar registrado em operacoespaeis no banco de administracao + + Se $operacao for vazio, e retornado "sim", o que permite que a verificacao apenas confirme que o login esta correto na sessao + + Paremeter: + + $operacao - operacao que sera verificada + */ + case "VALIDAOPERACAOSESSAO": + $retorno = "nao"; + if($_GET["operacao"] == ""){ + $retorno = "sim"; + } + else{ + if(verificaOperacaoSessao($_GET["operacao"]) == true){ + $retorno = "sim"; + } + else{ + //logoutUsuario(); + $retorno = "naopermitido"; + } + } + cpjson($retorno); + break; + /* + Valor: RECUPERARSENHA + + Cria uma nova senha para um usuario enviando-a por e-mailo + + Paremeter: + + $usuario + */ + case "RECUPERARSENHA": + $retorno = false; + if(!empty($_POST["usuario"])){ + $retorno = recuperarSenha($_POST["usuario"]); + } + cpjson($retorno); + break; + /* + Valor: ALTERARSENHA + + Altera a senha de um usuario + + Paremeter: + + $usuario + + $novasenha + */ + case "ALTERARSENHA": + $retorno = false; + if(!empty($_POST["usuario"])){ + $retorno = alterarSenha($_POST["usuario"],$_POST["novaSenha"]); + } + cpjson($retorno); + break; +} +function alterarSenha($usuario,$novaSenha){ + include(dirname(__FILE__)."/conexao.php"); + $dados = \admin\php\funcoesAdmin\pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where senha = '".md5($_SESSION["senha"])."' and login = '$usuario' and ativo = 1",$locaplic); + if(count($dados) > 0){ + $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'"); + $_SESSION["senha"] = $novaSenha; + $to = $dados[0]["email"]; + $subject = 'nova senha i3geo'; + $message = "Sua senha foi alterada"; + mail($to, $subject, $message); + return true; + } + else{ + return false; + } +} +function recuperarSenha($usuario){ + include(dirname(__FILE__)."/conexao.php"); + $novaSenha = rand(9000,1000000); + $dados = \admin\php\funcoesAdmin\pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$locaplic); + if(count($dados) > 0){ + $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'"); + $to = $dados[0]["email"]; + $subject = 'nova senha i3geo'; + $message = $novaSenha; + mail($to, $subject, $message); + return true; + } + else{ + return false; + } +} +// +//verifica se um determinado papel esta registrado na variavel SESSION +// +function verificaPapelSessao($id_papel){ + $resultado = false; + if(validaSessao()){ + foreach($_SESSION["papeis"] as $p){ + if($p["id_papel"] == 1 || $p["id_papel"] == $id_papel){ + return true; + } + } + } + return $resultado; +} +// +//verifica se uma determinada operacao esta registrada na variavel SESSION +// +function verificaOperacaoSessao($operacao){ + $resultado = false; + //a validacao consulta $_SESSION, que e definida no login + if(validaSessao()){ + //verifica se e administrador, caso positivo, permite qq operacao + foreach($_SESSION["papeis"] as $p){ + if($p == 1){ + return true; + } + } + if(!empty($_SESSION["operacoes"][$operacao])){ + $resultado = true; + } + } + return $resultado; +} +// +//verifica se o usuario esta logado +// +function validaSessao(){ + $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT']; + if($_SESSION['fingerprint'] != md5($fingerprint . session_id())){ + return false; + } + if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){ + return false; + } + return true; +} +// +//faz a autenticacao de um usuario baseado no login e senha +//registra as operacoes, papeis e grupos do usuario na SESSION +// +function autenticaUsuario($usuario,$senha,$dir_tmp,$i3geomaster){ + include(dirname(__FILE__)."/conexao.php"); + error_reporting(0); + $senhamd5 = md5($senha); + if(function_exists("password_hash")){ + $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 = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit; + //exit; + if(\admin\php\funcoesAdmin\verificaMaster($usuario,$senha,$i3geomaster) == true){ + //$pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario ",$dbh,false); + $pa = \admin\php\funcoesAdmin\pegaDados("select * from ".$esquemaadmin."i3geousr_papeis ",$dbh,false); + $op = \admin\php\funcoesAdmin\pegadados("SELECT O.codigo FROM ".$esquemaadmin."i3geousr_operacoes AS O",$dbh,false); + $gr = \admin\php\funcoesAdmin\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(); + //por causa das versoes antigas do PHP + if(strlen($senha) == 32 || !function_exists("password_hash") ){ + $dados = \admin\php\funcoesAdmin\pegaDados("select senha,login,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$dbh,false); + if(count($dados) == 1 && $dados[0]["senha"] == $senhamd5 && $dados[0]["login"] == $usuario){ + $ok = true; + } + } + else{ + $usuarios = \admin\php\funcoesAdmin\pegaDados("select senha,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$dbh,false); + if (count($usuarios) == 1 && password_verify($senha,$usuarios[0]["senha"])){ + $ok = true; + $dados[] = array("id_usuario"=>$usuarios[0]["id_usuario"],"nome_usuario"=>$usuarios[0]["nome_usuario"]); + } + $usuarios = null; + } + if($ok == true){ + $pa = \admin\php\funcoesAdmin\pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false); + $op = \admin\php\funcoesAdmin\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 WHERE id_usuario = ".$dados[0]["id_usuario"],$dbh,false); + $gr = \admin\php\funcoesAdmin\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; + } + } +} +// +//faz o logout do usuario destruindo os cookies e session +// +function logoutUsuario(){ + $_COOKIE = array(); + $_SESSION = array(); + if(session_status() == PHP_SESSION_ACTIVE){ + session_destroy(); + } +} +?> diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 275655b..b7298e7 100755 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -2716,7 +2716,7 @@ Return: */ function verificaPapelUsuario($id_papel) { - include_once(dirname(__FILE__)."/../admin/php/login.php"); + include_once(dirname(__FILE__)."/../admin1/php/login.php"); $r = verificaPapelSessao($id_papel); return $r; } @@ -2838,7 +2838,7 @@ $salva - salva o mapfile com os layers removidos ou nao Retorno: boolean indicando se o mapfile contem layers indevidos */ function validaAcessoTemas($map_file,$salva = true){ - //error_reporting(0); + //error_reporting(E_ALL); $indevidos = listaLayersIndevidos($map_file); $existeIndevidos = false; if(count($indevidos) > 0){ @@ -3034,7 +3034,7 @@ function restauraMapaAdmin($id_mapa,$dir_tmp){ if (filter_var($id_mapa, FILTER_VALIDATE_INT) === false){ exit; } - include(dirname(__FILE__)."/classesphp/conexao.php"); + include(dirname(__FILE__)."/conexao.php"); if(!empty($esquemaadmin)){ $esquemaadmin = str_replace(".","",$esquemaadmin)."."; } @@ -3120,7 +3120,7 @@ Array originada de fetchAll function pegaDadosAdminKey($sql,$subsEsquema){ //pegaDadosAdminKey("select codigo_tema,link_tema from __esq__i3geoadmin_temas","__esq__"); $resultado = array(); - include(dirname(__FILE__)."/classesphp/conexao.php"); + include(dirname(__FILE__)."/conexao.php"); $sql = str_replace($subsEsquema,$esquemaadmin,$sql); //error_reporting(0); $q = $dbh->query($sql,PDO::FETCH_ASSOC); diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index eac7fe8..f8acb97 100755 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -227,7 +227,9 @@ if($funcao == "criaMapa"){ //chdir($locaplic); $interfaceTemp = $interface; $interface = "mashup"; + include_once(dirname(__FILE__)."/../ms_criamapa.php"); + $_SESSION["interface"] = $interfaceTemp; $temp = $_SESSION["map_file"]; $id = session_id(); diff --git a/classesphp/sani_request.php b/classesphp/sani_request.php index 5c49c23..11f3625 100755 --- a/classesphp/sani_request.php +++ b/classesphp/sani_request.php @@ -2,6 +2,7 @@ if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME'])){ exit; } + //error_reporting(0); $bl = array("exec ","exec(","password","select","_decode","passthru","shell_exec","escapeshellarg","escapeshellcmd","proc_close","proc_open","dl","popen","contents","delete","drop","update","insert","system",";"); if (isset($_GET)){ diff --git a/css/i3geo7.css.php b/css/i3geo7.css.php old mode 100644 new mode 100755 index c8602db..c8602db --- a/css/i3geo7.css.php +++ b/css/i3geo7.css.php diff --git a/ferramentas/animagif/manutencao.php b/ferramentas/animagif/manutencao.php index 306c24f..8260d0e 100755 --- a/ferramentas/animagif/manutencao.php +++ b/ferramentas/animagif/manutencao.php @@ -1,5 +1,5 @@ 1){ if(file_exists($caminho."interface/".$interface)){ include_once($caminho."interface/".$interface); @@ -1319,31 +1317,7 @@ function incluiTemaWms() Projeto gvsig */ function incluiMapaGvsig($gvsiggvp,$gvsigview=""){ - global $mapn,$locaplic; - include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php"); - $gm = new gvsig2mapfile($gvsiggvp); - if(empty($gvsigview)){ - $gvsigview = $gm->getViewsNames(); - //$gvsigview = $gvsigview[0]; - } - else{ - $gvsigview = str_replace(" ",",",$gvsigview); - $gvsigview = explode(",",$gvsigview); - } - $numlayers = $mapn->numlayers; - for ($i=0;$i < $numlayers;$i++){ - $layer = $mapn->getlayer($i); - $layer->set("status",MS_DELETE); - } - foreach($gvsigview as $v){ - if($v != ""){ - $dataView = $gm->getViewData($v); - $mapn = $gm->addLayers($mapn,$gvsigview,$dataView["layerNames"]); - } - } - $next = $dataView["extent"]; - $ext = $mapn->extent; - $ext->setextent($next[0],$next[1],$next[2],$next[3]); + } /* Captura e mostra os erros de processamento do mapserver diff --git a/pacotes/cpaint/cpaint2_compacto.inc.js b/pacotes/cpaint/cpaint2_compacto.inc.js old mode 100644 new mode 100755 index 1179423..1179423 --- a/pacotes/cpaint/cpaint2_compacto.inc.js +++ b/pacotes/cpaint/cpaint2_compacto.inc.js diff --git a/pacotes/mobileesp/mdetect_compacto.js b/pacotes/mobileesp/mdetect_compacto.js old mode 100644 new mode 100755 index 9ab0db5..9ab0db5 --- a/pacotes/mobileesp/mdetect_compacto.js +++ b/pacotes/mobileesp/mdetect_compacto.js diff --git a/pacotes/yui290/build/carousel/carousel_compacto.js b/pacotes/yui290/build/carousel/carousel_compacto.js old mode 100644 new mode 100755 index 2111cd6..2111cd6 --- a/pacotes/yui290/build/carousel/carousel_compacto.js +++ b/pacotes/yui290/build/carousel/carousel_compacto.js diff --git a/pacotes/yui290/build/container/container_compacto.js b/pacotes/yui290/build/container/container_compacto.js old mode 100644 new mode 100755 index aa7fb0c..aa7fb0c --- a/pacotes/yui290/build/container/container_compacto.js +++ b/pacotes/yui290/build/container/container_compacto.js diff --git a/pacotes/yui290/build/container/container_core_compacto.js b/pacotes/yui290/build/container/container_core_compacto.js old mode 100644 new mode 100755 index f2c2d3c..f2c2d3c --- a/pacotes/yui290/build/container/container_core_compacto.js +++ b/pacotes/yui290/build/container/container_core_compacto.js diff --git a/pacotes/yui290/build/resize/resize_compacto.js b/pacotes/yui290/build/resize/resize_compacto.js old mode 100644 new mode 100755 index 335f70f..335f70f --- a/pacotes/yui290/build/resize/resize_compacto.js +++ b/pacotes/yui290/build/resize/resize_compacto.js diff --git a/pacotes/yui290/build/treeview/treeview_compacto.js b/pacotes/yui290/build/treeview/treeview_compacto.js old mode 100644 new mode 100755 index 6ff4374..6ff4374 --- a/pacotes/yui290/build/treeview/treeview_compacto.js +++ b/pacotes/yui290/build/treeview/treeview_compacto.js diff --git a/pacotes/yui290/build/utilities/utilities_compacto.js b/pacotes/yui290/build/utilities/utilities_compacto.js old mode 100644 new mode 100755 index 7a1455c..7a1455c --- a/pacotes/yui290/build/utilities/utilities_compacto.js +++ b/pacotes/yui290/build/utilities/utilities_compacto.js -- libgit2 0.21.2