Commit 5d0bfd86e8283d9069b9aef732e6c080ce4eaaa8
1 parent
9d8ec701
Exists in
master
and in
7 other branches
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ções em Ajax utilizadas para gerenciar login de usuário e controle de acesso | |
6 | - | |
7 | -Recebe as requisições feitas em JavaScript (AJAX) e retorna o resultado para a interface. | |
8 | - | |
9 | -O parâmetro "funcao" define qual a operação que será executada. Esse parâmetro é 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 é software livre; você pode redistribuí-lo | |
21 | -e/ou modificá-lo sob os termos da Licença Pública Geral | |
22 | -GNU conforme publicada pela Free Software Foundation; | |
23 | - | |
24 | -Este programa é distribuído na expectativa de que seja útil, | |
25 | -porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | |
26 | -de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | |
27 | -Consulte a Licença Pública Geral do GNU para mais detalhes. | |
28 | -Você deve ter recebido uma copia da Licença Pública Geral do | |
29 | -GNU junto com este programa; se não, escreva para a | |
30 | -Free Software Foundation, Inc., no endereç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ção que será executada (veja abaixo a lista de Valores que esse parâmetro pode assumir). | |
40 | - | |
41 | -Retorno: | |
42 | - | |
43 | -O resultado da operação será retornado em um objeto CPAINT. | |
44 | - | |
45 | -A construção da string JSON é feita preferencialmente pelas funções nativas do PHP. | |
46 | -Para efeitos de compatibilidade, uma vez que até a versão 4.2 a string JSON era construida pelo CPAINT, | |
47 | -o objeto CPAINT ainda é definido, porém, a função cpjson verifica se as funções nativas do PHPO (json) | |
48 | -estão instaladas, se estiverem, utiliza-se a função nativa, se nã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á retornada ao browser via JSON | |
106 | -switch (strtoupper($funcao)) | |
107 | -{ | |
108 | - /* | |
109 | - Valor: LOGIN | |
110 | - | |
111 | - Verifica usuá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 | -?> |
... | ... | @@ -0,0 +1,406 @@ |
1 | +<?php | |
2 | +exit; | |
3 | +/* | |
4 | +Title: funcoes_login.php | |
5 | + | |
6 | +Controle das requisições em Ajax utilizadas para gerenciar login de usuário e controle de acesso | |
7 | + | |
8 | +Recebe as requisições feitas em JavaScript (AJAX) e retorna o resultado para a interface. | |
9 | + | |
10 | +O parâmetro "funcao" define qual a operação que será executada. Esse parâmetro é 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 é software livre; você pode redistribuí-lo | |
22 | +e/ou modificá-lo sob os termos da Licença Pública Geral | |
23 | +GNU conforme publicada pela Free Software Foundation; | |
24 | + | |
25 | +Este programa é distribuído na expectativa de que seja útil, | |
26 | +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | |
27 | +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | |
28 | +Consulte a Licença Pública Geral do GNU para mais detalhes. | |
29 | +Você deve ter recebido uma copia da Licença Pública Geral do | |
30 | +GNU junto com este programa; se não, escreva para a | |
31 | +Free Software Foundation, Inc., no endereç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ção que será executada (veja abaixo a lista de Valores que esse parâmetro pode assumir). | |
41 | + | |
42 | +Retorno: | |
43 | + | |
44 | +O resultado da operação será retornado em um objeto CPAINT. | |
45 | + | |
46 | +A construção da string JSON é feita preferencialmente pelas funções nativas do PHP. | |
47 | +Para efeitos de compatibilidade, uma vez que até a versão 4.2 a string JSON era construida pelo CPAINT, | |
48 | +o objeto CPAINT ainda é definido, porém, a função cpjson verifica se as funções nativas do PHPO (json) | |
49 | +estão instaladas, se estiverem, utiliza-se a função nativa, se nã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á retornada ao browser via JSON | |
107 | +switch (strtoupper($funcao)) | |
108 | +{ | |
109 | + /* | |
110 | + Valor: LOGIN | |
111 | + | |
112 | + Verifica usuá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ável existente no ms_configura.php com o cadastro de usuá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 | } | ... | ... |
... | ... | @@ -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á retornada ao browser via JSON | |
66 | +switch (strtoupper($funcao)) | |
67 | +{ | |
68 | + /* | |
69 | + Valor: LOGIN | |
70 | + | |
71 | + Verifica usuá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 == "criaMapa"){ |
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)){ | ... | ... |
ferramentas/animagif/manutencao.php
ferramentas/editortema/exec.php
... | ... | @@ -25,7 +25,7 @@ Free Software Foundation, Inc., no endere&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=""){ |
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
ferramentas/tme/manutencao.php
init/login.php
... | ... | @@ -147,7 +147,7 @@ include "head.php"; |
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/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çã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/yui290/build/container/container_compacto.js
100644 → 100755
pacotes/yui290/build/container/container_core_compacto.js
100644 → 100755
pacotes/yui290/build/utilities/utilities_compacto.js
100644 → 100755