Commit 5d0bfd86e8283d9069b9aef732e6c080ce4eaaa8

Authored by Edmar Moretti
1 parent 9d8ec701

Remoção do programa admin/php/login.php em favor de admin1/php/login.php

Showing 74 changed files with 798 additions and 454 deletions   Show diff stats
admin/admin.db
No preview for this file type
admin/php/admin.php
... ... @@ -194,7 +194,7 @@ function pegaDados($sql,$dbh="",$close=true)
194 194 $resultado = array();
195 195 //is_string para efeitos de compatibilidade
196 196 if($dbh == "" || is_string($dbh)){
197   - include(dirname(__FILE__)."/../adin1/php/conexao.php");
  197 + include(dirname(__FILE__)."/../../admin1/php/conexao.php");
198 198 }
199 199 error_reporting(0);
200 200 //$dbh deve ser definido com somente leitura, mas por prevencao:
... ...
admin/php/login.php
... ... @@ -1,405 +0,0 @@
1   -<?php
2   -/*
3   -Title: funcoes_login.php
4   -
5   -Controle das requisi&ccedil;&otilde;es em Ajax utilizadas para gerenciar login de usu&aacute;rio e controle de acesso
6   -
7   -Recebe as requisi&ccedil;&otilde;es feitas em JavaScript (AJAX) e retorna o resultado para a interface.
8   -
9   -O par&acirc;metro "funcao" define qual a opera&ccedil;&atilde;o que ser&aacute; executada. Esse par&acirc;metro &eacute; verificado em um bloco "switch ($funcao)".
10   -
11   -Licenca:
12   -
13   -GPL2
14   -
15   -i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
16   -
17   -Direitos Autorais Reservados (c) 2006 Edmar Moretti
18   -Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
19   -
20   -Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo
21   -e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
22   -GNU conforme publicada pela Free Software Foundation;
23   -
24   -Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,
25   -por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
26   -de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.
27   -Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.
28   -Voc&ecirc; deve ter recebido uma copia da Licen&ccedil;a P&uacute;blica Geral do
29   -GNU junto com este programa; se n&atilde;o, escreva para a
30   -Free Software Foundation, Inc., no endere&ccedil;o
31   -59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
32   -
33   -Arquivo:
34   -
35   -i3geo/classesphp/funcoes_login.php
36   -
37   -Parametros:
38   -
39   -funcao - op&ccedil;&atilde;o que ser&aacute; executada (veja abaixo a lista de Valores que esse par&acirc;metro pode assumir).
40   -
41   -Retorno:
42   -
43   -O resultado da opera&ccedil;&atilde;o ser&aacute; retornado em um objeto CPAINT.
44   -
45   -A constru&ccedil;&atilde;o da string JSON &eacute; feita preferencialmente pelas fun&ccedil;&otilde;es nativas do PHP.
46   -Para efeitos de compatibilidade, uma vez que at&eacute; a vers&atilde;o 4.2 a string JSON era construida pelo CPAINT,
47   -o objeto CPAINT ainda &eacute; definido, por&eacute;m, a fun&ccedil;&atilde;o cpjson verifica se as fun&ccedil;&otilde;es nativas do PHPO (json)
48   -est&atilde;o instaladas, se estiverem, utiliza-se a fun&ccedil;&atilde;o nativa, se n&atilde;o, utiliza-se o CPAINT para gerar o JSON.
49   -
50   -Exemplo de chamada CPAINT (Ajax) do lado do cliente (javascript):
51   -
52   -var p = "classesphp/mapa_controle.php?funcao=crialente&resolucao=1.5&g_sid="+g_sid
53   -
54   -var cp = new cpaint()
55   -
56   -cp.set_response_type("JSON")
57   -
58   -cp.call(p,"lente",ajaxabrelente)
59   -
60   -*/
61   -//error_reporting(0);
62   -//
63   -//pega as variaveis passadas com get ou post
64   -//
65   -include_once(dirname(__FILE__)."/../safe.php");
66   -
67   -include_once(dirname(__FILE__)."/admin.php");
68   -
69   -//verifica se o login pode ser realizado
70   -if(isset($i3geoPermiteLogin) && $i3geoPermiteLogin == false){
71   - header ( "HTTP/1.1 403 Login desativado" );
72   - exit ();
73   -}
74   -//$i3geoPermiteLoginIp vem de ms_configura.php
75   -if(isset($i3geoPermiteLoginIp)){
76   - checaLoginIp($i3geoPermiteLoginIp);
77   -}
78   -
79   -//error_reporting(0);
80   -session_write_close();
81   -session_name("i3GeoLogin");
82   -//se o usuario estiver tentando fazer login
83   -if(!empty($_POST["usuario"]) && !empty($_POST["senha"])){
84   - logoutUsuario();
85   - session_regenerate_id();
86   - $_SESSION = array();
87   - session_start();
88   - $funcao = "login";
89   -}
90   -else{//se nao, verifica se o login ja existe realmente
91   - if(!empty($_COOKIE["i3geocodigologin"])){
92   - session_id($_COOKIE["i3geocodigologin"]);
93   - session_start();
94   - if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){
95   - logoutUsuario();
96   - cpjson("logout");
97   - }
98   - }
99   - else{//caso nao exista, retorna um erro
100   - logoutUsuario();
101   - cpjson("erro");
102   - }
103   -}
104   -//var_dump($_SESSION);exit;
105   -$retorno = "logout"; //string que ser&aacute; retornada ao browser via JSON
106   -switch (strtoupper($funcao))
107   -{
108   - /*
109   - Valor: LOGIN
110   -
111   - Verifica usu&aacute;rio e senha e registra id da sessao que guarda o resultado.
112   -
113   - */
114   - case "LOGIN":
115   - $usuario = $_POST["usuario"];
116   - $senha = $_POST["senha"];
117   - $teste = autenticaUsuario($usuario,$senha);
118   - if($teste == "muitas tentativas"){
119   - logoutUsuario();
120   - header ( "HTTP/1.1 403 Muitas tentativas" );
121   - exit;
122   - }
123   - if($teste != false){
124   - $_SESSION["usuario"] = $usuario;
125   - $_SESSION["id_usuario"] = $teste["usuario"]["id_usuario"];
126   - $_SESSION["senha"] = $senha;
127   - $_SESSION["papeis"] = $teste["papeis"];
128   - $_SESSION["operacoes"] = $teste["operacoes"];
129   - $_SESSION["gruposusr"] = $teste["gruposusr"];
130   - $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT'];
131   - //var_dump($_SESSION["operacoes"]);exit;
132   - $_SESSION['fingerprint'] = md5($fingerprint . session_id());
133   - $editor = "nao";
134   - foreach($_SESSION["papeis"] as $p){
135   - if($p < 3){
136   - $editor = "sim";
137   - }
138   - }
139   - $retorno = array("id"=>session_id(),"nome"=>$teste["usuario"]["nome_usuario"],"editor"=>$editor);
140   - cpjson($retorno);
141   - }
142   - else{
143   - logoutUsuario();
144   - cpjson("logout");
145   - }
146   - break;
147   - /*
148   - Valor: VALIDAOPERACAOUSUARIO
149   -
150   - Verifica se um usuario pode executar uma operacao
151   -
152   - Para que o usuario possa executar a operacao, o papel ao qual ele pertence deve estar registrado em operacoespaeis no banco de administracao
153   -
154   - Se $operacao for vazio, e retornado "sim", o que permite que a verificacao apenas confirme que o login esta correto na sessao
155   -
156   - Paremeter:
157   -
158   - $operacao - operacao que sera verificada
159   - */
160   - case "VALIDAOPERACAOSESSAO":
161   - $retorno = "nao";
162   - if($_GET["operacao"] == ""){
163   - $retorno = "sim";
164   - }
165   - else{
166   - if(verificaOperacaoSessao($_GET["operacao"]) == true){
167   - $retorno = "sim";
168   - }
169   - else{
170   - //logoutUsuario();
171   - $retorno = "naopermitido";
172   - }
173   - }
174   - cpjson($retorno);
175   - break;
176   - /*
177   - Valor: RECUPERARSENHA
178   -
179   - Cria uma nova senha para um usuario enviando-a por e-mailo
180   -
181   - Paremeter:
182   -
183   - $usuario
184   - */
185   - case "RECUPERARSENHA":
186   - $retorno = false;
187   - if(!empty($_POST["usuario"])){
188   - $retorno = recuperarSenha($_POST["usuario"]);
189   - }
190   - cpjson($retorno);
191   - break;
192   - /*
193   - Valor: ALTERARSENHA
194   -
195   - Altera a senha de um usuario
196   -
197   - Paremeter:
198   -
199   - $usuario
200   -
201   - $novasenha
202   - */
203   - case "ALTERARSENHA":
204   - $retorno = false;
205   - if(!empty($_POST["usuario"])){
206   - $retorno = alterarSenha($_POST["usuario"],$_POST["novaSenha"]);
207   - }
208   - cpjson($retorno);
209   - break;
210   -}
211   -function alterarSenha($usuario,$novaSenha){
212   - include(dirname(__FILE__)."/conexao.php");
213   - $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where senha = '".md5($_SESSION["senha"])."' and login = '$usuario' and ativo = 1",$locaplic);
214   - if(count($dados) > 0){
215   - $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'");
216   - $_SESSION["senha"] = $novaSenha;
217   - $to = $dados[0]["email"];
218   - $subject = 'nova senha i3geo';
219   - $message = "Sua senha foi alterada";
220   - mail($to, $subject, $message);
221   - return true;
222   - }
223   - else{
224   - return false;
225   - }
226   -}
227   -function recuperarSenha($usuario){
228   - include(dirname(__FILE__)."/conexao.php");
229   - $novaSenha = rand(9000,1000000);
230   - $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$locaplic);
231   - if(count($dados) > 0){
232   - $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'");
233   - $to = $dados[0]["email"];
234   - $subject = 'nova senha i3geo';
235   - $message = $novaSenha;
236   - mail($to, $subject, $message);
237   - return true;
238   - }
239   - else{
240   - return false;
241   - }
242   -}
243   -//
244   -//verifica se um determinado papel esta registrado na variavel SESSION
245   -//
246   -function verificaPapelSessao($id_papel){
247   - $resultado = false;
248   - if(validaSessao()){
249   - foreach($_SESSION["papeis"] as $p){
250   - if($p["id_papel"] == 1 || $p["id_papel"] == $id_papel){
251   - return true;
252   - }
253   - }
254   - }
255   - return $resultado;
256   -}
257   -//
258   -//verifica se uma determinada operacao esta registrada na variavel SESSION
259   -//
260   -function verificaOperacaoSessao($operacao){
261   - $resultado = false;
262   - //a validacao consulta $_SESSION, que e definida no login
263   - if(validaSessao()){
264   - //verifica se e administrador, caso positivo, permite qq operacao
265   - foreach($_SESSION["papeis"] as $p){
266   - if($p == 1){
267   - return true;
268   - }
269   - }
270   - if(!empty($_SESSION["operacoes"][$operacao])){
271   - $resultado = true;
272   - }
273   - }
274   - return $resultado;
275   -}
276   -//
277   -//verifica se o usuario esta logado
278   -//
279   -function validaSessao(){
280   - $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT'];
281   - if($_SESSION['fingerprint'] != md5($fingerprint . session_id())){
282   - return false;
283   - }
284   - if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){
285   - return false;
286   - }
287   - return true;
288   -}
289   -//
290   -//faz a autenticacao de um usuario baseado no login e senha
291   -//registra as operacoes, papeis e grupos do usuario na SESSION
292   -//
293   -function autenticaUsuario($usuario,$senha){
294   - include(dirname(__FILE__)."/conexao.php");
295   - error_reporting(0);
296   - $senhamd5 = md5($senha);
297   - if(function_exists("password_hash")){
298   - $senhaHash = password_hash($senha, PASSWORD_DEFAULT);
299   - }
300   -
301   - //faz um teste de tentativas de acesso
302   - $nomeArquivo = $dir_tmp."/a".md5($usuario."testeTentativas").intval(time() / 1000);
303   - if(!file_exists($dir_tmp)){
304   - return false;
305   - }
306   - if(file_exists($nomeArquivo)){
307   - $tentativas = (int) file_get_contents($nomeArquivo);
308   - if($tentativas > 3){
309   - return "muitas tentativas";
310   - }
311   - $tentativas = $tentativas + 1;
312   - file_put_contents($nomeArquivo, $tentativas);
313   - }
314   - else {
315   - file_put_contents($nomeArquivo, 1);
316   - }
317   - //verifica se o usuario esta cadastrado no ms_configura.php em $i3geomaster
318   - //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit;
319   - //exit;
320   - if(verificaMaster($usuario,$senha) == true){
321   - //$pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario ",$dbh,false);
322   - $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papeis ",$dbh,false);
323   - $op = pegadados("SELECT O.codigo FROM ".$esquemaadmin."i3geousr_operacoes AS O",$dbh,false);
324   - $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupos ",$dbh,false);
325   - //var_dump($gr);exit;
326   - $operacoes = array();
327   - foreach($op as $o){
328   - $operacoes[$o["codigo"]] = true;
329   - }
330   - $papeis = array();
331   - foreach($pa as $p){
332   - $papeis[] = $p["id_papel"];
333   - }
334   - $gruposusr = array();
335   - foreach($gr as $p){
336   - $gruposusr[] = $p["id_grupo"];
337   - }
338   - $master = array();
339   - $master["id_usuario"] = "master";
340   - $master["nome_usuario"] = "master";
341   - $r = array("usuario"=>$master,"papeis"=>$papeis,"operacoes"=>$operacoes,"gruposusr"=>$gruposusr);
342   - $dbh = null;
343   - $dbhw = null;
344   - file_put_contents($nomeArquivo, 1);
345   - return $r;
346   - }
347   - else{
348   - //verifica se a senha e uma string ou pode ser um md5
349   - $ok = false;
350   - $dados = array();
351   - //por causa das versoes antigas do PHP
352   - if(strlen($senha) == 32 || !function_exists("password_hash") ){
353   - $dados = pegaDados("select senha,login,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$dbh,false);
354   - if(count($dados) == 1 && $dados[0]["senha"] == $senhamd5 && $dados[0]["login"] == $usuario){
355   - $ok = true;
356   - }
357   - }
358   - else{
359   - $usuarios = pegaDados("select senha,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$dbh,false);
360   - if (count($usuarios) == 1 && password_verify($senha,$usuarios[0]["senha"])){
361   - $ok = true;
362   - $dados[] = array("id_usuario"=>$usuarios[0]["id_usuario"],"nome_usuario"=>$usuarios[0]["nome_usuario"]);
363   - }
364   - $usuarios = null;
365   - }
366   - if($ok == true){
367   - $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
368   - $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);
369   - $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupousuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
370   - $operacoes = array();
371   - foreach($op as $o){
372   - $operacoes[$o["codigo"]] = true;
373   - }
374   - $papeis = array();
375   - foreach($pa as $p){
376   - $papeis[] = $p["id_papel"];
377   - }
378   - $gruposusr = array();
379   - foreach($gr as $p){
380   - $gruposusr[] = $p["id_grupo"];
381   - }
382   - $r = array("usuario"=>$dados[0],"papeis"=>$papeis,"operacoes"=>$operacoes,"gruposusr"=>$gruposusr);
383   - $dbh = null;
384   - $dbhw = null;
385   - file_put_contents($nomeArquivo, 1);
386   - return $r;
387   - }
388   - else{
389   - $dbh = null;
390   - $dbhw = null;
391   - return false;
392   - }
393   - }
394   -}
395   -//
396   -//faz o logout do usuario destruindo os cookies e session
397   -//
398   -function logoutUsuario(){
399   - $_COOKIE = array();
400   - $_SESSION = array();
401   - if(session_status() == PHP_SESSION_ACTIVE){
402   - session_destroy();
403   - }
404   -}
405   -?>
admin/php/xxxlogin.php 0 → 100755
... ... @@ -0,0 +1,406 @@
  1 +<?php
  2 +exit;
  3 +/*
  4 +Title: funcoes_login.php
  5 +
  6 +Controle das requisi&ccedil;&otilde;es em Ajax utilizadas para gerenciar login de usu&aacute;rio e controle de acesso
  7 +
  8 +Recebe as requisi&ccedil;&otilde;es feitas em JavaScript (AJAX) e retorna o resultado para a interface.
  9 +
  10 +O par&acirc;metro "funcao" define qual a opera&ccedil;&atilde;o que ser&aacute; executada. Esse par&acirc;metro &eacute; verificado em um bloco "switch ($funcao)".
  11 +
  12 +Licenca:
  13 +
  14 +GPL2
  15 +
  16 +i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
  17 +
  18 +Direitos Autorais Reservados (c) 2006 Edmar Moretti
  19 +Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
  20 +
  21 +Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo
  22 +e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
  23 +GNU conforme publicada pela Free Software Foundation;
  24 +
  25 +Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,
  26 +por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
  27 +de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.
  28 +Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.
  29 +Voc&ecirc; deve ter recebido uma copia da Licen&ccedil;a P&uacute;blica Geral do
  30 +GNU junto com este programa; se n&atilde;o, escreva para a
  31 +Free Software Foundation, Inc., no endere&ccedil;o
  32 +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  33 +
  34 +Arquivo:
  35 +
  36 +i3geo/classesphp/funcoes_login.php
  37 +
  38 +Parametros:
  39 +
  40 +funcao - op&ccedil;&atilde;o que ser&aacute; executada (veja abaixo a lista de Valores que esse par&acirc;metro pode assumir).
  41 +
  42 +Retorno:
  43 +
  44 +O resultado da opera&ccedil;&atilde;o ser&aacute; retornado em um objeto CPAINT.
  45 +
  46 +A constru&ccedil;&atilde;o da string JSON &eacute; feita preferencialmente pelas fun&ccedil;&otilde;es nativas do PHP.
  47 +Para efeitos de compatibilidade, uma vez que at&eacute; a vers&atilde;o 4.2 a string JSON era construida pelo CPAINT,
  48 +o objeto CPAINT ainda &eacute; definido, por&eacute;m, a fun&ccedil;&atilde;o cpjson verifica se as fun&ccedil;&otilde;es nativas do PHPO (json)
  49 +est&atilde;o instaladas, se estiverem, utiliza-se a fun&ccedil;&atilde;o nativa, se n&atilde;o, utiliza-se o CPAINT para gerar o JSON.
  50 +
  51 +Exemplo de chamada CPAINT (Ajax) do lado do cliente (javascript):
  52 +
  53 +var p = "classesphp/mapa_controle.php?funcao=crialente&resolucao=1.5&g_sid="+g_sid
  54 +
  55 +var cp = new cpaint()
  56 +
  57 +cp.set_response_type("JSON")
  58 +
  59 +cp.call(p,"lente",ajaxabrelente)
  60 +
  61 +*/
  62 +//error_reporting(0);
  63 +//
  64 +//pega as variaveis passadas com get ou post
  65 +//
  66 +include_once(dirname(__FILE__)."/../safe.php");
  67 +//var_dump($_POST);exit;
  68 +include_once(dirname(__FILE__)."/admin.php");
  69 +
  70 +//verifica se o login pode ser realizado
  71 +if(isset($i3geoPermiteLogin) && $i3geoPermiteLogin == false){
  72 + header ( "HTTP/1.1 403 Login desativado" );
  73 + exit ();
  74 +}
  75 +//$i3geoPermiteLoginIp vem de ms_configura.php
  76 +if(isset($i3geoPermiteLoginIp)){
  77 + checaLoginIp($i3geoPermiteLoginIp);
  78 +}
  79 +
  80 +//error_reporting(0);
  81 +session_write_close();
  82 +session_name("i3GeoLogin");
  83 +//se o usuario estiver tentando fazer login
  84 +if(!empty($_POST["usuario"]) && !empty($_POST["senha"])){
  85 + logoutUsuario();
  86 + session_regenerate_id();
  87 + $_SESSION = array();
  88 + session_start();
  89 + $funcao = "login";
  90 +}
  91 +else{//se nao, verifica se o login ja existe realmente
  92 + if(!empty($_COOKIE["i3geocodigologin"])){
  93 + session_id($_COOKIE["i3geocodigologin"]);
  94 + session_start();
  95 + if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){
  96 + logoutUsuario();
  97 + cpjson("logout");
  98 + }
  99 + }
  100 + else{//caso nao exista, retorna um erro
  101 + logoutUsuario();
  102 + cpjson("erro");
  103 + }
  104 +}
  105 +//var_dump($_SESSION);exit;
  106 +$retorno = "logout"; //string que ser&aacute; retornada ao browser via JSON
  107 +switch (strtoupper($funcao))
  108 +{
  109 + /*
  110 + Valor: LOGIN
  111 +
  112 + Verifica usu&aacute;rio e senha e registra id da sessao que guarda o resultado.
  113 +
  114 + */
  115 + case "LOGIN":
  116 + $usuario = $_POST["usuario"];
  117 + $senha = $_POST["senha"];
  118 + $teste = autenticaUsuario($usuario,$senha);
  119 + if($teste == "muitas tentativas"){
  120 + logoutUsuario();
  121 + header ( "HTTP/1.1 403 Muitas tentativas" );
  122 + exit;
  123 + }
  124 + if($teste != false){
  125 + $_SESSION["usuario"] = $usuario;
  126 + $_SESSION["id_usuario"] = $teste["usuario"]["id_usuario"];
  127 + $_SESSION["senha"] = $senha;
  128 + $_SESSION["papeis"] = $teste["papeis"];
  129 + $_SESSION["operacoes"] = $teste["operacoes"];
  130 + $_SESSION["gruposusr"] = $teste["gruposusr"];
  131 + $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT'];
  132 + //var_dump($_SESSION["operacoes"]);exit;
  133 + $_SESSION['fingerprint'] = md5($fingerprint . session_id());
  134 + $editor = "nao";
  135 + foreach($_SESSION["papeis"] as $p){
  136 + if($p < 3){
  137 + $editor = "sim";
  138 + }
  139 + }
  140 + $retorno = array("id"=>session_id(),"nome"=>$teste["usuario"]["nome_usuario"],"editor"=>$editor);
  141 + cpjson($retorno);
  142 + }
  143 + else{
  144 + logoutUsuario();
  145 + cpjson("logout");
  146 + }
  147 + break;
  148 + /*
  149 + Valor: VALIDAOPERACAOUSUARIO
  150 +
  151 + Verifica se um usuario pode executar uma operacao
  152 +
  153 + Para que o usuario possa executar a operacao, o papel ao qual ele pertence deve estar registrado em operacoespaeis no banco de administracao
  154 +
  155 + Se $operacao for vazio, e retornado "sim", o que permite que a verificacao apenas confirme que o login esta correto na sessao
  156 +
  157 + Paremeter:
  158 +
  159 + $operacao - operacao que sera verificada
  160 + */
  161 + case "VALIDAOPERACAOSESSAO":
  162 + $retorno = "nao";
  163 + if($_GET["operacao"] == ""){
  164 + $retorno = "sim";
  165 + }
  166 + else{
  167 + if(verificaOperacaoSessao($_GET["operacao"]) == true){
  168 + $retorno = "sim";
  169 + }
  170 + else{
  171 + //logoutUsuario();
  172 + $retorno = "naopermitido";
  173 + }
  174 + }
  175 + cpjson($retorno);
  176 + break;
  177 + /*
  178 + Valor: RECUPERARSENHA
  179 +
  180 + Cria uma nova senha para um usuario enviando-a por e-mailo
  181 +
  182 + Paremeter:
  183 +
  184 + $usuario
  185 + */
  186 + case "RECUPERARSENHA":
  187 + $retorno = false;
  188 + if(!empty($_POST["usuario"])){
  189 + $retorno = recuperarSenha($_POST["usuario"]);
  190 + }
  191 + cpjson($retorno);
  192 + break;
  193 + /*
  194 + Valor: ALTERARSENHA
  195 +
  196 + Altera a senha de um usuario
  197 +
  198 + Paremeter:
  199 +
  200 + $usuario
  201 +
  202 + $novasenha
  203 + */
  204 + case "ALTERARSENHA":
  205 + $retorno = false;
  206 + if(!empty($_POST["usuario"])){
  207 + $retorno = alterarSenha($_POST["usuario"],$_POST["novaSenha"]);
  208 + }
  209 + cpjson($retorno);
  210 + break;
  211 +}
  212 +function alterarSenha($usuario,$novaSenha){
  213 + include(dirname(__FILE__)."/conexao.php");
  214 + $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where senha = '".md5($_SESSION["senha"])."' and login = '$usuario' and ativo = 1",$locaplic);
  215 + if(count($dados) > 0){
  216 + $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'");
  217 + $_SESSION["senha"] = $novaSenha;
  218 + $to = $dados[0]["email"];
  219 + $subject = 'nova senha i3geo';
  220 + $message = "Sua senha foi alterada";
  221 + mail($to, $subject, $message);
  222 + return true;
  223 + }
  224 + else{
  225 + return false;
  226 + }
  227 +}
  228 +function recuperarSenha($usuario){
  229 + include(dirname(__FILE__)."/conexao.php");
  230 + $novaSenha = rand(9000,1000000);
  231 + $dados = pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$locaplic);
  232 + if(count($dados) > 0){
  233 + $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'");
  234 + $to = $dados[0]["email"];
  235 + $subject = 'nova senha i3geo';
  236 + $message = $novaSenha;
  237 + mail($to, $subject, $message);
  238 + return true;
  239 + }
  240 + else{
  241 + return false;
  242 + }
  243 +}
  244 +//
  245 +//verifica se um determinado papel esta registrado na variavel SESSION
  246 +//
  247 +function verificaPapelSessao($id_papel){
  248 + $resultado = false;
  249 + if(validaSessao()){
  250 + foreach($_SESSION["papeis"] as $p){
  251 + if($p["id_papel"] == 1 || $p["id_papel"] == $id_papel){
  252 + return true;
  253 + }
  254 + }
  255 + }
  256 + return $resultado;
  257 +}
  258 +//
  259 +//verifica se uma determinada operacao esta registrada na variavel SESSION
  260 +//
  261 +function verificaOperacaoSessao($operacao){
  262 + $resultado = false;
  263 + //a validacao consulta $_SESSION, que e definida no login
  264 + if(validaSessao()){
  265 + //verifica se e administrador, caso positivo, permite qq operacao
  266 + foreach($_SESSION["papeis"] as $p){
  267 + if($p == 1){
  268 + return true;
  269 + }
  270 + }
  271 + if(!empty($_SESSION["operacoes"][$operacao])){
  272 + $resultado = true;
  273 + }
  274 + }
  275 + return $resultado;
  276 +}
  277 +//
  278 +//verifica se o usuario esta logado
  279 +//
  280 +function validaSessao(){
  281 + $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT'];
  282 + if($_SESSION['fingerprint'] != md5($fingerprint . session_id())){
  283 + return false;
  284 + }
  285 + if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){
  286 + return false;
  287 + }
  288 + return true;
  289 +}
  290 +//
  291 +//faz a autenticacao de um usuario baseado no login e senha
  292 +//registra as operacoes, papeis e grupos do usuario na SESSION
  293 +//
  294 +function autenticaUsuario($usuario,$senha){
  295 + include(dirname(__FILE__)."/conexao.php");
  296 + error_reporting(0);
  297 + $senhamd5 = md5($senha);
  298 + if(function_exists("password_hash")){
  299 + $senhaHash = password_hash($senha, PASSWORD_DEFAULT);
  300 + }
  301 +
  302 + //faz um teste de tentativas de acesso
  303 + $nomeArquivo = $dir_tmp."/a".md5($usuario."testeTentativas").intval(time() / 1000);
  304 + if(!file_exists($dir_tmp)){
  305 + return false;
  306 + }
  307 + if(file_exists($nomeArquivo)){
  308 + $tentativas = (int) file_get_contents($nomeArquivo);
  309 + if($tentativas > 3){
  310 + return "muitas tentativas";
  311 + }
  312 + $tentativas = $tentativas + 1;
  313 + file_put_contents($nomeArquivo, $tentativas);
  314 + }
  315 + else {
  316 + file_put_contents($nomeArquivo, 1);
  317 + }
  318 + //verifica se o usuario esta cadastrado no ms_configura.php em $i3geomaster
  319 + //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit;
  320 + //exit;
  321 + if(verificaMaster($usuario,$senha) == true){
  322 + //$pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario ",$dbh,false);
  323 + $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papeis ",$dbh,false);
  324 + $op = pegadados("SELECT O.codigo FROM ".$esquemaadmin."i3geousr_operacoes AS O",$dbh,false);
  325 + $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupos ",$dbh,false);
  326 + //var_dump($gr);exit;
  327 + $operacoes = array();
  328 + foreach($op as $o){
  329 + $operacoes[$o["codigo"]] = true;
  330 + }
  331 + $papeis = array();
  332 + foreach($pa as $p){
  333 + $papeis[] = $p["id_papel"];
  334 + }
  335 + $gruposusr = array();
  336 + foreach($gr as $p){
  337 + $gruposusr[] = $p["id_grupo"];
  338 + }
  339 + $master = array();
  340 + $master["id_usuario"] = "master";
  341 + $master["nome_usuario"] = "master";
  342 + $r = array("usuario"=>$master,"papeis"=>$papeis,"operacoes"=>$operacoes,"gruposusr"=>$gruposusr);
  343 + $dbh = null;
  344 + $dbhw = null;
  345 + file_put_contents($nomeArquivo, 1);
  346 + return $r;
  347 + }
  348 + else{
  349 + //verifica se a senha e uma string ou pode ser um md5
  350 + $ok = false;
  351 + $dados = array();
  352 + //por causa das versoes antigas do PHP
  353 + if(strlen($senha) == 32 || !function_exists("password_hash") ){
  354 + $dados = pegaDados("select senha,login,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and senha = '$senhamd5' and ativo = 1",$dbh,false);
  355 + if(count($dados) == 1 && $dados[0]["senha"] == $senhamd5 && $dados[0]["login"] == $usuario){
  356 + $ok = true;
  357 + }
  358 + }
  359 + else{
  360 + $usuarios = pegaDados("select senha,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$dbh,false);
  361 + if (count($usuarios) == 1 && password_verify($senha,$usuarios[0]["senha"])){
  362 + $ok = true;
  363 + $dados[] = array("id_usuario"=>$usuarios[0]["id_usuario"],"nome_usuario"=>$usuarios[0]["nome_usuario"]);
  364 + }
  365 + $usuarios = null;
  366 + }
  367 + if($ok == true){
  368 + $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
  369 + $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);
  370 + $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupousuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
  371 + $operacoes = array();
  372 + foreach($op as $o){
  373 + $operacoes[$o["codigo"]] = true;
  374 + }
  375 + $papeis = array();
  376 + foreach($pa as $p){
  377 + $papeis[] = $p["id_papel"];
  378 + }
  379 + $gruposusr = array();
  380 + foreach($gr as $p){
  381 + $gruposusr[] = $p["id_grupo"];
  382 + }
  383 + $r = array("usuario"=>$dados[0],"papeis"=>$papeis,"operacoes"=>$operacoes,"gruposusr"=>$gruposusr);
  384 + $dbh = null;
  385 + $dbhw = null;
  386 + file_put_contents($nomeArquivo, 1);
  387 + return $r;
  388 + }
  389 + else{
  390 + $dbh = null;
  391 + $dbhw = null;
  392 + return false;
  393 + }
  394 + }
  395 +}
  396 +//
  397 +//faz o logout do usuario destruindo os cookies e session
  398 +//
  399 +function logoutUsuario(){
  400 + $_COOKIE = array();
  401 + $_SESSION = array();
  402 + if(session_status() == PHP_SESSION_ACTIVE){
  403 + session_destroy();
  404 + }
  405 +}
  406 +?>
... ...
admin1/php/funcoesAdmin.php
... ... @@ -439,7 +439,7 @@ senha {string}
439 439 i3geomaster {array} - vari&aacute;vel existente no ms_configura.php com o cadastro de usu&aacute;rios masters
440 440 */
441 441 function verificaMaster($usuario,$senha,$i3geomaster){
442   - foreach($i3geomaster as $teste){
  442 + foreach($i3geomaster as $teste){
443 443 if(!empty($usuario) && !empty($senha) && $teste["usuario"] == $usuario && $teste["senha"] == $senha){
444 444 return true;
445 445 }
... ...
admin1/php/login.php 0 → 100755
... ... @@ -0,0 +1,366 @@
  1 +<?php
  2 +include(dirname(__FILE__)."/../../ms_configura.php");
  3 +include(dirname(__FILE__)."/funcoesAdmin.php");
  4 +//verifica se o login pode ser realizado
  5 +if ($i3geoPermiteLogin == false) {
  6 + header ( "HTTP/1.1 403 Login desativado" );
  7 + exit ();
  8 +}
  9 +// checa a lista branca de IPs
  10 +if (! empty ( $i3geoPermiteLoginIp )) {
  11 + $ipaddress = '';
  12 + if (getenv ( 'HTTP_CLIENT_IP' ))
  13 + $ipaddress = getenv ( 'HTTP_CLIENT_IP' );
  14 + else if (getenv ( 'HTTP_X_FORWARDED_FOR' ))
  15 + $ipaddress = getenv ( 'HTTP_X_FORWARDED_FOR' );
  16 + else if (getenv ( 'HTTP_X_FORWARDED' ))
  17 + $ipaddress = getenv ( 'HTTP_X_FORWARDED' );
  18 + else if (getenv ( 'HTTP_FORWARDED_FOR' ))
  19 + $ipaddress = getenv ( 'HTTP_FORWARDED_FOR' );
  20 + else if (getenv ( 'HTTP_FORWARDED' ))
  21 + $ipaddress = getenv ( 'HTTP_FORWARDED' );
  22 + else if (getenv ( 'REMOTE_ADDR' ))
  23 + $ipaddress = getenv ( 'REMOTE_ADDR' );
  24 + else
  25 + $ipaddress = 'UNKNOWN';
  26 + if (! in_array ( $ipaddress, $i3geoPermiteLoginIp )) {
  27 + header ( "HTTP/1.1 403 Login nao permitido para o ip" );
  28 + exit ();
  29 + }
  30 +}
  31 +if(!function_exists("cpjson")){
  32 + include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
  33 +}
  34 +//error_reporting(0);
  35 +session_write_close();
  36 +session_name("i3GeoLogin");
  37 +//se o usuario estiver tentando fazer login
  38 +include_once (dirname(__FILE__)."/../../classesphp/sani_request.php");
  39 +
  40 +if(!empty($_POST["usuario"]) && !empty($_POST["senha"])){
  41 + logoutUsuario();
  42 + session_regenerate_id();
  43 + $_SESSION = array();
  44 + session_start();
  45 + $funcao = "login";
  46 + $_SESSION["locaplic"] = $locaplic;
  47 + $_SESSION["conexaoadmin"] = $conexaoadmin;
  48 +}
  49 +else{//se nao, verifica se o login ja existe realmente
  50 + if(!empty($_COOKIE["i3geocodigologin"])){
  51 + session_id($_COOKIE["i3geocodigologin"]);
  52 + session_start();
  53 + if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){
  54 + logoutUsuario();
  55 + cpjson("logout");
  56 + }
  57 + }
  58 + else{//caso nao exista, retorna um erro
  59 + logoutUsuario();
  60 + cpjson("erro");
  61 + }
  62 +}
  63 +
  64 +//var_dump($_SESSION);exit;
  65 +$retorno = "logout"; //string que ser&aacute; retornada ao browser via JSON
  66 +switch (strtoupper($funcao))
  67 +{
  68 + /*
  69 + Valor: LOGIN
  70 +
  71 + Verifica usu&aacute;rio e senha e registra id da sessao que guarda o resultado.
  72 +
  73 + */
  74 + case "LOGIN":
  75 + $usuario = $_POST["usuario"];
  76 + $senha = $_POST["senha"];
  77 + $teste = autenticaUsuario($usuario,$senha,$dir_tmp,$i3geomaster);
  78 + if($teste == "muitas tentativas"){
  79 + logoutUsuario();
  80 + header ( "HTTP/1.1 403 Muitas tentativas" );
  81 + exit;
  82 + }
  83 + if($teste != false){
  84 + $_SESSION["usuario"] = $usuario;
  85 + $_SESSION["id_usuario"] = $teste["usuario"]["id_usuario"];
  86 + $_SESSION["senha"] = $senha;
  87 + $_SESSION["papeis"] = $teste["papeis"];
  88 + $_SESSION["operacoes"] = $teste["operacoes"];
  89 + $_SESSION["gruposusr"] = $teste["gruposusr"];
  90 + $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT'];
  91 + //var_dump($_SESSION["operacoes"]);exit;
  92 + $_SESSION['fingerprint'] = md5($fingerprint . session_id());
  93 + $editor = "nao";
  94 + foreach($_SESSION["papeis"] as $p){
  95 + if($p < 3){
  96 + $editor = "sim";
  97 + }
  98 + }
  99 + $retorno = array("id"=>session_id(),"nome"=>$teste["usuario"]["nome_usuario"],"editor"=>$editor);
  100 + cpjson($retorno);
  101 + }
  102 + else{
  103 + logoutUsuario();
  104 + cpjson("logout");
  105 + }
  106 + break;
  107 + /*
  108 + Valor: VALIDAOPERACAOUSUARIO
  109 +
  110 + Verifica se um usuario pode executar uma operacao
  111 +
  112 + Para que o usuario possa executar a operacao, o papel ao qual ele pertence deve estar registrado em operacoespaeis no banco de administracao
  113 +
  114 + Se $operacao for vazio, e retornado "sim", o que permite que a verificacao apenas confirme que o login esta correto na sessao
  115 +
  116 + Paremeter:
  117 +
  118 + $operacao - operacao que sera verificada
  119 + */
  120 + case "VALIDAOPERACAOSESSAO":
  121 + $retorno = "nao";
  122 + if($_GET["operacao"] == ""){
  123 + $retorno = "sim";
  124 + }
  125 + else{
  126 + if(verificaOperacaoSessao($_GET["operacao"]) == true){
  127 + $retorno = "sim";
  128 + }
  129 + else{
  130 + //logoutUsuario();
  131 + $retorno = "naopermitido";
  132 + }
  133 + }
  134 + cpjson($retorno);
  135 + break;
  136 + /*
  137 + Valor: RECUPERARSENHA
  138 +
  139 + Cria uma nova senha para um usuario enviando-a por e-mailo
  140 +
  141 + Paremeter:
  142 +
  143 + $usuario
  144 + */
  145 + case "RECUPERARSENHA":
  146 + $retorno = false;
  147 + if(!empty($_POST["usuario"])){
  148 + $retorno = recuperarSenha($_POST["usuario"]);
  149 + }
  150 + cpjson($retorno);
  151 + break;
  152 + /*
  153 + Valor: ALTERARSENHA
  154 +
  155 + Altera a senha de um usuario
  156 +
  157 + Paremeter:
  158 +
  159 + $usuario
  160 +
  161 + $novasenha
  162 + */
  163 + case "ALTERARSENHA":
  164 + $retorno = false;
  165 + if(!empty($_POST["usuario"])){
  166 + $retorno = alterarSenha($_POST["usuario"],$_POST["novaSenha"]);
  167 + }
  168 + cpjson($retorno);
  169 + break;
  170 +}
  171 +function alterarSenha($usuario,$novaSenha){
  172 + include(dirname(__FILE__)."/conexao.php");
  173 + $dados = \admin\php\funcoesAdmin\pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where senha = '".md5($_SESSION["senha"])."' and login = '$usuario' and ativo = 1",$locaplic);
  174 + if(count($dados) > 0){
  175 + $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'");
  176 + $_SESSION["senha"] = $novaSenha;
  177 + $to = $dados[0]["email"];
  178 + $subject = 'nova senha i3geo';
  179 + $message = "Sua senha foi alterada";
  180 + mail($to, $subject, $message);
  181 + return true;
  182 + }
  183 + else{
  184 + return false;
  185 + }
  186 +}
  187 +function recuperarSenha($usuario){
  188 + include(dirname(__FILE__)."/conexao.php");
  189 + $novaSenha = rand(9000,1000000);
  190 + $dados = \admin\php\funcoesAdmin\pegaDados("select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$locaplic);
  191 + if(count($dados) > 0){
  192 + $dbhw->query("UPDATE ".$esquemaadmin."i3geousr_usuarios SET senha='".md5($novaSenha)."' WHERE login = '$usuario'");
  193 + $to = $dados[0]["email"];
  194 + $subject = 'nova senha i3geo';
  195 + $message = $novaSenha;
  196 + mail($to, $subject, $message);
  197 + return true;
  198 + }
  199 + else{
  200 + return false;
  201 + }
  202 +}
  203 +//
  204 +//verifica se um determinado papel esta registrado na variavel SESSION
  205 +//
  206 +function verificaPapelSessao($id_papel){
  207 + $resultado = false;
  208 + if(validaSessao()){
  209 + foreach($_SESSION["papeis"] as $p){
  210 + if($p["id_papel"] == 1 || $p["id_papel"] == $id_papel){
  211 + return true;
  212 + }
  213 + }
  214 + }
  215 + return $resultado;
  216 +}
  217 +//
  218 +//verifica se uma determinada operacao esta registrada na variavel SESSION
  219 +//
  220 +function verificaOperacaoSessao($operacao){
  221 + $resultado = false;
  222 + //a validacao consulta $_SESSION, que e definida no login
  223 + if(validaSessao()){
  224 + //verifica se e administrador, caso positivo, permite qq operacao
  225 + foreach($_SESSION["papeis"] as $p){
  226 + if($p == 1){
  227 + return true;
  228 + }
  229 + }
  230 + if(!empty($_SESSION["operacoes"][$operacao])){
  231 + $resultado = true;
  232 + }
  233 + }
  234 + return $resultado;
  235 +}
  236 +//
  237 +//verifica se o usuario esta logado
  238 +//
  239 +function validaSessao(){
  240 + $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT'];
  241 + if($_SESSION['fingerprint'] != md5($fingerprint . session_id())){
  242 + return false;
  243 + }
  244 + if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){
  245 + return false;
  246 + }
  247 + return true;
  248 +}
  249 +//
  250 +//faz a autenticacao de um usuario baseado no login e senha
  251 +//registra as operacoes, papeis e grupos do usuario na SESSION
  252 +//
  253 +function autenticaUsuario($usuario,$senha,$dir_tmp,$i3geomaster){
  254 + include(dirname(__FILE__)."/conexao.php");
  255 + error_reporting(0);
  256 + $senhamd5 = md5($senha);
  257 + if(function_exists("password_hash")){
  258 + $senhaHash = password_hash($senha, PASSWORD_DEFAULT);
  259 + }
  260 +
  261 + //faz um teste de tentativas de acesso
  262 + $nomeArquivo = $dir_tmp."/a".md5($usuario."testeTentativas").intval(time() / 1000);
  263 + if(!file_exists($dir_tmp)){
  264 + return false;
  265 + }
  266 + if(file_exists($nomeArquivo)){
  267 + $tentativas = (int) file_get_contents($nomeArquivo);
  268 + if($tentativas > 3){
  269 + return "muitas tentativas";
  270 + }
  271 + $tentativas = $tentativas + 1;
  272 + file_put_contents($nomeArquivo, $tentativas);
  273 + }
  274 + else {
  275 + file_put_contents($nomeArquivo, 1);
  276 + }
  277 +
  278 + //verifica se o usuario esta cadastrado no ms_configura.php em $i3geomaster
  279 + //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit;
  280 + //exit;
  281 + if(\admin\php\funcoesAdmin\verificaMaster($usuario,$senha,$i3geomaster) == true){
  282 + //$pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario ",$dbh,false);
  283 + $pa = \admin\php\funcoesAdmin\pegaDados("select * from ".$esquemaadmin."i3geousr_papeis ",$dbh,false);
  284 + $op = \admin\php\funcoesAdmin\pegadados("SELECT O.codigo FROM ".$esquemaadmin."i3geousr_operacoes AS O",$dbh,false);
  285 + $gr = \admin\php\funcoesAdmin\pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupos ",$dbh,false);
  286 + //var_dump($gr);exit;
  287 + $operacoes = array();
  288 + foreach($op as $o){
  289 + $operacoes[$o["codigo"]] = true;
  290 + }
  291 + $papeis = array();
  292 + foreach($pa as $p){
  293 + $papeis[] = $p["id_papel"];
  294 + }
  295 + $gruposusr = array();
  296 + foreach($gr as $p){
  297 + $gruposusr[] = $p["id_grupo"];
  298 + }
  299 + $master = array();
  300 + $master["id_usuario"] = "master";
  301 + $master["nome_usuario"] = "master";
  302 + $r = array("usuario"=>$master,"papeis"=>$papeis,"operacoes"=>$operacoes,"gruposusr"=>$gruposusr);
  303 + $dbh = null;
  304 + $dbhw = null;
  305 + file_put_contents($nomeArquivo, 1);
  306 + return $r;
  307 + }
  308 + else{
  309 + //verifica se a senha e uma string ou pode ser um md5
  310 + $ok = false;
  311 + $dados = array();
  312 + //por causa das versoes antigas do PHP
  313 + if(strlen($senha) == 32 || !function_exists("password_hash") ){
  314 + $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);
  315 + if(count($dados) == 1 && $dados[0]["senha"] == $senhamd5 && $dados[0]["login"] == $usuario){
  316 + $ok = true;
  317 + }
  318 + }
  319 + else{
  320 + $usuarios = \admin\php\funcoesAdmin\pegaDados("select senha,id_usuario,nome_usuario from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and ativo = 1",$dbh,false);
  321 + if (count($usuarios) == 1 && password_verify($senha,$usuarios[0]["senha"])){
  322 + $ok = true;
  323 + $dados[] = array("id_usuario"=>$usuarios[0]["id_usuario"],"nome_usuario"=>$usuarios[0]["nome_usuario"]);
  324 + }
  325 + $usuarios = null;
  326 + }
  327 + if($ok == true){
  328 + $pa = \admin\php\funcoesAdmin\pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
  329 + $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);
  330 + $gr = \admin\php\funcoesAdmin\pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupousuario where id_usuario = ".$dados[0]["id_usuario"],$dbh,false);
  331 + $operacoes = array();
  332 + foreach($op as $o){
  333 + $operacoes[$o["codigo"]] = true;
  334 + }
  335 + $papeis = array();
  336 + foreach($pa as $p){
  337 + $papeis[] = $p["id_papel"];
  338 + }
  339 + $gruposusr = array();
  340 + foreach($gr as $p){
  341 + $gruposusr[] = $p["id_grupo"];
  342 + }
  343 + $r = array("usuario"=>$dados[0],"papeis"=>$papeis,"operacoes"=>$operacoes,"gruposusr"=>$gruposusr);
  344 + $dbh = null;
  345 + $dbhw = null;
  346 + file_put_contents($nomeArquivo, 1);
  347 + return $r;
  348 + }
  349 + else{
  350 + $dbh = null;
  351 + $dbhw = null;
  352 + return false;
  353 + }
  354 + }
  355 +}
  356 +//
  357 +//faz o logout do usuario destruindo os cookies e session
  358 +//
  359 +function logoutUsuario(){
  360 + $_COOKIE = array();
  361 + $_SESSION = array();
  362 + if(session_status() == PHP_SESSION_ACTIVE){
  363 + session_destroy();
  364 + }
  365 +}
  366 +?>
... ...
classesphp/funcoes_gerais.php
... ... @@ -2716,7 +2716,7 @@ Return:
2716 2716 */
2717 2717 function verificaPapelUsuario($id_papel)
2718 2718 {
2719   - include_once(dirname(__FILE__)."/../admin/php/login.php");
  2719 + include_once(dirname(__FILE__)."/../admin1/php/login.php");
2720 2720 $r = verificaPapelSessao($id_papel);
2721 2721 return $r;
2722 2722 }
... ... @@ -2838,7 +2838,7 @@ $salva - salva o mapfile com os layers removidos ou nao
2838 2838 Retorno: boolean indicando se o mapfile contem layers indevidos
2839 2839 */
2840 2840 function validaAcessoTemas($map_file,$salva = true){
2841   - //error_reporting(0);
  2841 + //error_reporting(E_ALL);
2842 2842 $indevidos = listaLayersIndevidos($map_file);
2843 2843 $existeIndevidos = false;
2844 2844 if(count($indevidos) > 0){
... ... @@ -3034,7 +3034,7 @@ function restauraMapaAdmin($id_mapa,$dir_tmp){
3034 3034 if (filter_var($id_mapa, FILTER_VALIDATE_INT) === false){
3035 3035 exit;
3036 3036 }
3037   - include(dirname(__FILE__)."/classesphp/conexao.php");
  3037 + include(dirname(__FILE__)."/conexao.php");
3038 3038 if(!empty($esquemaadmin)){
3039 3039 $esquemaadmin = str_replace(".","",$esquemaadmin).".";
3040 3040 }
... ... @@ -3120,7 +3120,7 @@ Array originada de fetchAll
3120 3120 function pegaDadosAdminKey($sql,$subsEsquema){
3121 3121 //pegaDadosAdminKey("select codigo_tema,link_tema from __esq__i3geoadmin_temas","__esq__");
3122 3122 $resultado = array();
3123   - include(dirname(__FILE__)."/classesphp/conexao.php");
  3123 + include(dirname(__FILE__)."/conexao.php");
3124 3124 $sql = str_replace($subsEsquema,$esquemaadmin,$sql);
3125 3125 //error_reporting(0);
3126 3126 $q = $dbh->query($sql,PDO::FETCH_ASSOC);
... ...
classesphp/mapa_controle.php
... ... @@ -227,7 +227,9 @@ if($funcao == &quot;criaMapa&quot;){
227 227 //chdir($locaplic);
228 228 $interfaceTemp = $interface;
229 229 $interface = "mashup";
  230 +
230 231 include_once(dirname(__FILE__)."/../ms_criamapa.php");
  232 +
231 233 $_SESSION["interface"] = $interfaceTemp;
232 234 $temp = $_SESSION["map_file"];
233 235 $id = session_id();
... ...
classesphp/sani_request.php
... ... @@ -2,6 +2,7 @@
2 2 if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME'])){
3 3 exit;
4 4 }
  5 +
5 6 //error_reporting(0);
6 7 $bl = array("exec ","exec(","password","select","_decode","passthru","shell_exec","escapeshellarg","escapeshellcmd","proc_close","proc_open","dl","popen","contents","delete","drop","update","insert","system",";");
7 8 if (isset($_GET)){
... ...
css/i3geo7.css.php 100644 → 100755
ferramentas/animagif/manutencao.php
1 1 <?php
2   -include_once(dirname(__FILE__)."/../../admin/php/login.php");
  2 +include_once(dirname(__FILE__)."/../../admin1/php/login.php");
3 3 include("../blacklist.php");
4 4 verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false);
5 5 $funcoesEdicao = array(
... ...
ferramentas/editorgm/editorgm_compacto.js 100644 → 100755
ferramentas/editorol/editorol_compacto.js 100644 → 100755
ferramentas/editortema/exec.php
... ... @@ -25,7 +25,7 @@ Free Software Foundation, Inc., no endere&amp;ccedil;o
25 25 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
26 26  
27 27 */
28   -include_once(dirname(__FILE__)."/../../admin/php/login.php");
  28 +include_once(dirname(__FILE__)."/../../admin1/php/login.php");
29 29  
30 30 include(dirname(__FILE__)."/../blacklist.php");
31 31 verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false);
... ...
ferramentas/loginusuario/index.js
... ... @@ -225,7 +225,7 @@ i3GEOF.loginusuario = {
225 225 }
226 226 }
227 227 };
228   - p = i3GEO.configura.locaplic+"/admin/php/login.php?funcao=login";
  228 + p = i3GEO.configura.locaplic+"/admin1/php/login.php?funcao=login";
229 229 cp = new cpaint();
230 230 cp.set_transfer_mode("POST");
231 231 cp.set_response_type("JSON");
... ... @@ -246,7 +246,7 @@ i3GEOF.loginusuario = {
246 246 alert($trad("x31"));
247 247 }
248 248 };
249   - p = i3GEO.configura.locaplic+"/admin/php/login.php?funcao=recuperarSenha";
  249 + p = i3GEO.configura.locaplic+"/admin1/php/login.php?funcao=recuperarSenha";
250 250 cp = new cpaint();
251 251 cp.set_transfer_mode("POST");
252 252 cp.set_response_type("JSON");
... ... @@ -269,7 +269,7 @@ i3GEOF.loginusuario = {
269 269 }
270 270 };
271 271 if(novaSenha != ""){
272   - p = i3GEO.configura.locaplic+"/admin/php/login.php?funcao=alterarSenha";
  272 + p = i3GEO.configura.locaplic+"/admin1/php/login.php?funcao=alterarSenha";
273 273 cp = new cpaint();
274 274 cp.set_transfer_mode("POST");
275 275 cp.set_response_type("JSON");
... ...
ferramentas/metaestat/templates/lib/dadosmapa.php
... ... @@ -44,7 +44,7 @@ function dadosmapa($loc=&quot;&quot;){
44 44 exit;
45 45 }
46 46 if($dadosmapa["publicado"] == "NAO"){
47   - include($loc."/admin/php/login.php");
  47 + include($loc."/admin1/php/login.php");
48 48 if(verificaOperacaoSessao("admin/metaestat/geral") == false){
49 49 echo "O mapa nao esta marcado como publicado e vc nao fez login ou nao tem permissao";
50 50 exit;
... ...
ferramentas/navegapostgis/exec.php
1 1 <?php
2   -include_once(dirname(__FILE__)."/../../admin/php/login.php");
  2 +include_once(dirname(__FILE__)."/../../admin1/php/login.php");
3 3 include("../../ms_configura.php");
4 4 include("../blacklist.php");
5 5 verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false);
... ...
ferramentas/storymap/manutencao.php
1 1 <?php
2   -include_once(dirname(__FILE__)."/../../admin/php/login.php");
  2 +include_once(dirname(__FILE__)."/../../admin1/php/login.php");
3 3 include("../blacklist.php");
4 4 verificaBlFerramentas(basename(dirname(__FILE__)),"",false);
5 5 $funcoesEdicao = array(
... ...
ferramentas/tme/manutencao.php
1 1 <?php
2   -include_once(dirname(__FILE__)."/../../admin/php/login.php");
  2 +include_once(dirname(__FILE__)."/../../admin1/php/login.php");
3 3  
4 4 include(dirname(__FILE__)."/../blacklist.php");
5 5 verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false);
... ...
init/login.php
... ... @@ -147,7 +147,7 @@ include &quot;head.php&quot;;
147 147 $(window).on("scroll click",
148 148 function(){
149 149 $("#mensagemLogin").fadeOut(300);
150   - $("#jumbotron").fadeOut(300)
  150 + $("#jumbotron").fadeOut(300);
151 151 }
152 152 );
153 153 //verifica se deve ou nao esconder a mensagem de boas vindas verificando o parametro enviado pela url
... ...
js/compactados/ajuda_compacto.js 100644 → 100755
js/compactados/analise_compacto.js 100644 → 100755
js/compactados/arvoredecamadas_compacto.js 100644 → 100755
js/compactados/arvoredetemas_compacto.js 100644 → 100755
js/compactados/base64_compacto.js 100644 → 100755
js/compactados/busca_compacto.js 100644 → 100755
js/compactados/caixaDeFerramentas_compacto.js 100644 → 100755
js/compactados/calculo_compacto.js 100644 → 100755
js/compactados/catalogoDir_compacto.js 100644 → 100755
js/compactados/catalogoEstrelas_compacto.js 100644 → 100755
js/compactados/catalogoInde_compacto.js 100644 → 100755
js/compactados/catalogoMapas_compacto.js 100644 → 100755
js/compactados/catalogoMenus_compacto.js 100644 → 100755
js/compactados/catalogoMetaestat_compacto.js 100644 → 100755
js/compactados/catalogoOgc_compacto.js 100644 → 100755
js/compactados/catalogoRegioes_compacto.js 100644 → 100755
js/compactados/catalogoSistemas_compacto.js 100644 → 100755
js/compactados/configura_compacto.js 100644 → 100755
js/compactados/coordenadas_compacto.js 100644 → 100755
js/compactados/desenho_compacto.js 100644 → 100755
js/compactados/dicionario_ajuda_compacto.js 100644 → 100755
js/compactados/dicionario_compacto.js 100644 → 100755
js/compactados/editor_compacto.js 100644 → 100755
js/compactados/eventos_compacto.js 100644 → 100755
js/compactados/guias_compacto.js 100644 → 100755
js/compactados/idioma_compacto.js 100644 → 100755
js/compactados/ini_i3geo_compacto.js 100644 → 100755
js/compactados/interface_compacto.js 100644 → 100755
js/compactados/janela_compacto.js 100644 → 100755
js/compactados/legenda_compacto.js 100644 → 100755
js/compactados/login_compacto.js 100644 → 100755
js/compactados/mapa_compacto.js 100644 → 100755
js/compactados/maparef_compacto.js 100644 → 100755
js/compactados/marcador_compacto.js 100644 → 100755
js/compactados/mustache.js 100644 → 100755
js/compactados/navega_compacto.js 100644 → 100755
js/compactados/php_compacto.js 100644 → 100755
js/compactados/plugini3geo_compacto.js 100644 → 100755
js/compactados/proj4js.js 100644 → 100755
js/compactados/social_compacto.js 100644 → 100755
js/compactados/tema_compacto.js 100644 → 100755
js/compactados/util_compacto.js 100644 → 100755
js/compactados/wicket.js 100644 → 100755
js/i3geo_tudo_compacto7.js.php 100644 → 100755
js/login.js
... ... @@ -184,14 +184,14 @@ i3GEO.login = {
184 184 // verificacao rapida, busca apenas na sessao do usuario ja aberta
185 185 if (!tipo || tipo === "sessao") {
186 186 p = locaplic
187   - + "/admin/php/login.php?funcao=validaoperacaosessao";
  187 + + "/admin1/php/login.php?funcao=validaoperacaosessao";
188 188 }
189 189 // verifica no banoc de dados, o que considera qualquer mudanca no banco
190 190 // feita apos o usuario ter aberto a sessao
191 191 //XXX implementar funcao validaoperacaobanco
192 192 if (tipo === "banco") {
193 193 p = locaplic
194   - + "/admin/php/login.php?funcao=validaoperacaobanco";
  194 + + "/admin1/php/login.php?funcao=validaoperacaobanco";
195 195 }
196 196 cp = new cpaint();
197 197 cp.set_response_type("JSON");
... ...
ms_criamapa.php
... ... @@ -423,7 +423,6 @@ if(!isset($i3geoPermiteLogin)){
423 423 else{
424 424 $i3geoPermiteLogin_ = $i3geoPermiteLogin;
425 425 }
426   -
427 426 /*
428 427 Inicia a se&ccedil;&atilde;o
429 428  
... ... @@ -661,9 +660,9 @@ if(isset($url_wms)){
661 660  
662 661 adaptaLayers($tmpfname,$versao);
663 662  
664   -if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")){
665   - require_once(dirname(__FILE__)."/ms_registraip.php");
666   -}
  663 +//if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")){
  664 +// require_once(dirname(__FILE__)."/ms_registraip.php");
  665 +//}
667 666 if ($interface != "mashup"){
668 667 abreInterface($interface,$caminho,$tempo);
669 668 }
... ... @@ -727,8 +726,7 @@ function adaptaLayers($tmpfname,$versao){
727 726 Redireciona para o HTML definido em $interface, abrindo o mapa
728 727 */
729 728 function abreInterface($interface,$caminho,$tempo){
730   - $nomeInterface = explode(".",basename($interface));
731   - //$_SESSION["interface"] = $nomeInterface[0];
  729 + $nomeInterface = explode(".",basename($interface));
732 730 if (count(explode(".php",$interface)) > 1){
733 731 if(file_exists($caminho."interface/".$interface)){
734 732 include_once($caminho."interface/".$interface);
... ... @@ -1319,31 +1317,7 @@ function incluiTemaWms()
1319 1317 Projeto gvsig
1320 1318 */
1321 1319 function incluiMapaGvsig($gvsiggvp,$gvsigview=""){
1322   - global $mapn,$locaplic;
1323   - include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php");
1324   - $gm = new gvsig2mapfile($gvsiggvp);
1325   - if(empty($gvsigview)){
1326   - $gvsigview = $gm->getViewsNames();
1327   - //$gvsigview = $gvsigview[0];
1328   - }
1329   - else{
1330   - $gvsigview = str_replace(" ",",",$gvsigview);
1331   - $gvsigview = explode(",",$gvsigview);
1332   - }
1333   - $numlayers = $mapn->numlayers;
1334   - for ($i=0;$i < $numlayers;$i++){
1335   - $layer = $mapn->getlayer($i);
1336   - $layer->set("status",MS_DELETE);
1337   - }
1338   - foreach($gvsigview as $v){
1339   - if($v != ""){
1340   - $dataView = $gm->getViewData($v);
1341   - $mapn = $gm->addLayers($mapn,$gvsigview,$dataView["layerNames"]);
1342   - }
1343   - }
1344   - $next = $dataView["extent"];
1345   - $ext = $mapn->extent;
1346   - $ext->setextent($next[0],$next[1],$next[2],$next[3]);
  1320 +
1347 1321 }
1348 1322 /*
1349 1323 Captura e mostra os erros de processamento do mapserver
... ...
pacotes/cpaint/cpaint2_compacto.inc.js 100644 → 100755
pacotes/mobileesp/mdetect_compacto.js 100644 → 100755
pacotes/yui290/build/carousel/carousel_compacto.js 100644 → 100755
pacotes/yui290/build/container/container_compacto.js 100644 → 100755
pacotes/yui290/build/container/container_core_compacto.js 100644 → 100755
pacotes/yui290/build/resize/resize_compacto.js 100644 → 100755
pacotes/yui290/build/treeview/treeview_compacto.js 100644 → 100755
pacotes/yui290/build/utilities/utilities_compacto.js 100644 → 100755