Commit 62e6020e5458774802c5316353e15fecc7f732e3
1 parent
bfbca652
Exists in
master
and in
7 other branches
Inclusão de validação de temas restritos no parsemapfile.php
Showing
5 changed files
with
113 additions
and
70 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/php/parsemapfile.php
... | ... | @@ -7,6 +7,10 @@ Converte um mapfile em um arquivo XML |
7 | 7 | O padrão XML utilizado é compatível com a estrutura de um projeto do softwrae GVSIG ate a versão 1.1 |
8 | 8 | Esse XML é utilizado pelo plugin do i3Geo para GVSIG, que permite visualizar a árvore de temas do i3Geo dentro do GVSIG. |
9 | 9 | |
10 | +No caso de layers que fazem acesso a banco de dados, a string de conexao e bloqueada por default | |
11 | + | |
12 | +Para desbloquear e necessario editar a variavel de configuracao existente nesse mesmo arquivo | |
13 | + | |
10 | 14 | Licenca: |
11 | 15 | |
12 | 16 | GPL2 |
... | ... | @@ -33,14 +37,17 @@ Arquivo: |
33 | 37 | |
34 | 38 | i3geo/admin/php/parsemapfile.php |
35 | 39 | */ |
36 | -//TODO permitir acesso apenas com login e senha | |
37 | -//TODO verificar restricao de acesso ao tema | |
38 | - | |
39 | -//return; | |
40 | 40 | include("../../ms_configura.php"); |
41 | 41 | include_once("../../classesphp/funcoes_gerais.php"); |
42 | 42 | include_once("../../classesphp/carrega_ext.php"); |
43 | 43 | include_once("../../classesphp/pega_variaveis.php"); |
44 | +// | |
45 | +//essa variavel indica se a senha do banco e bloqueada ou nao caso | |
46 | +//o tema seja do tipo postgis | |
47 | +//por default e feito o bloqueio | |
48 | +// | |
49 | +$bloqueiaStringConexao = true; | |
50 | +// | |
44 | 51 | error_reporting(0); |
45 | 52 | if(!isset($forcawms)){$forcawms = "nao";} |
46 | 53 | $objcontype[0] = "MS_INLINE"; |
... | ... | @@ -70,6 +77,13 @@ $objlayertypes[8] = "MS_LAYER_CHART"; |
70 | 77 | |
71 | 78 | $codigoLayer = $id; |
72 | 79 | $mapfile = $locaplic."/temas/".$codigoLayer.".map"; |
80 | +//remove temas restritos pelo sistema de controle de usuarios | |
81 | +$indevidos = validaAcessoTemas($mapfile,false); | |
82 | +if($indevidos == true){ | |
83 | + echo "Encontrados layers restritos"; | |
84 | + exit; | |
85 | +} | |
86 | +// | |
73 | 87 | $mapa = ms_newMapObj($mapfile); |
74 | 88 | if(!isset($tipoparse) || $tipoparse=="") |
75 | 89 | {mapfile();exit;} |
... | ... | @@ -267,7 +281,7 @@ function legendaSimples($layername) |
267 | 281 | // |
268 | 282 | function mapfile() |
269 | 283 | { |
270 | - global $codigoLayer,$mapfile,$mapa,$objcontype,$objlayertypes,$forcawms,$postgis_mapa; | |
284 | + global $codigoLayer,$mapfile,$mapa,$objcontype,$objlayertypes,$forcawms,$postgis_mapa,$bloqueiaStringConexao; | |
271 | 285 | $layers = $mapa->getalllayernames(); |
272 | 286 | $dados = array(); |
273 | 287 | $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; |
... | ... | @@ -355,11 +369,20 @@ function mapfile() |
355 | 369 | else |
356 | 370 | {$con = $postgis_mapa[$con];} |
357 | 371 | } |
358 | - $xml .= "<user>".preg_replace('/.*user\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</user>\n"; | |
359 | - $xml .= "<password>".preg_replace('/.*password\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</password>\n"; | |
360 | - $xml .= "<dbname>".preg_replace('/.*dbname\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</dbname>\n"; | |
361 | - $xml .= "<host>".preg_replace('/.*host\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</host>\n"; | |
362 | - $xml .= "<port>".preg_replace('/.*port\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</port>\n"; | |
372 | + if($bloqueiaStringConexao == true){ | |
373 | + $xml .= "<user>bloqueado (veja i3geo/admin/php/parsemapfile)</user>\n"; | |
374 | + $xml .= "<password></password>\n"; | |
375 | + $xml .= "<dbname></dbname>\n"; | |
376 | + $xml .= "<host></host>\n"; | |
377 | + $xml .= "<port></port>\n"; | |
378 | + } | |
379 | + else{ | |
380 | + $xml .= "<user>".preg_replace('/.*user\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</user>\n"; | |
381 | + $xml .= "<password>".preg_replace('/.*password\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</password>\n"; | |
382 | + $xml .= "<dbname>".preg_replace('/.*dbname\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</dbname>\n"; | |
383 | + $xml .= "<host>".preg_replace('/.*host\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</host>\n"; | |
384 | + $xml .= "<port>".preg_replace('/.*port\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</port>\n"; | |
385 | + } | |
363 | 386 | $xml .= "</connection>\n"; |
364 | 387 | $d = explode("(",$d); |
365 | 388 | $d = explode(")",$d[1]); |
... | ... | @@ -448,5 +471,4 @@ function pegaEstilos($xml,$classe) |
448 | 471 | } |
449 | 472 | return $xml; |
450 | 473 | } |
451 | - | |
452 | 474 | ?> |
453 | 475 | \ No newline at end of file | ... | ... |
classesphp/funcoes_gerais.php
... | ... | @@ -2451,18 +2451,33 @@ function retornaShapesSelecionados($objLayer,$map_file,$objMapa){ |
2451 | 2451 | Function: validaAcessoTemas |
2452 | 2452 | |
2453 | 2453 | Remocao dos layers com restricoes de acesso registradas no sistema de controle de usuarios |
2454 | + | |
2455 | +Remove os layers indevidos (considerando o usuario logado) de um mapfile com opção de salvar ou nao o arquivo apos a remocao | |
2456 | + | |
2457 | +Parametros: | |
2458 | + | |
2459 | +$map_file - nome do arquivo mapfile, podendo ser um dos que existem em i3geo/temas desde que com o nome completo | |
2460 | + | |
2461 | +$salva - salva o mapfile com os layers removidos ou nao | |
2462 | + | |
2463 | +Retorno: boolean indicando se o mapfile contem layers indevidos | |
2454 | 2464 | */ |
2455 | -function validaAcessoTemas($map_file){ | |
2465 | +function validaAcessoTemas($map_file,$salva = true){ | |
2456 | 2466 | $indevidos = listaLayersIndevidos($map_file); |
2467 | + $existeIndevidos = false; | |
2457 | 2468 | if(count($indevidos) > 0){ |
2469 | + $existeIndevidos = true; | |
2458 | 2470 | $m = ms_newMapObj($map_file); |
2459 | 2471 | foreach($indevidos as $i){ |
2460 | 2472 | $l = $m->getlayerbyname($i); |
2461 | 2473 | $l->set("status",MS_DELETE); |
2462 | 2474 | } |
2463 | - $m->save($map_file); | |
2475 | + //salva o mapfile | |
2476 | + if($salva == true){ | |
2477 | + $m->save($map_file); | |
2478 | + } | |
2464 | 2479 | } |
2465 | - return; | |
2480 | + return $existeIndevidos; | |
2466 | 2481 | } |
2467 | 2482 | /* |
2468 | 2483 | Function: listaTemasRestritos |
... | ... | @@ -2500,6 +2515,10 @@ function listaLayersIndevidos($map_file){ |
2500 | 2515 | for ($i=0;$i < $c;++$i) { |
2501 | 2516 | $layer = $m->getlayer($i); |
2502 | 2517 | $meta = $layer->getmetadata("arquivotemaoriginal"); |
2518 | + //pode ser que o metadata nao esteja definido ainda | |
2519 | + if($meta == ""){ | |
2520 | + $meta = str_replace(".map","",basename($map_file)); | |
2521 | + } | |
2503 | 2522 | if($meta != ""){ |
2504 | 2523 | $t = $restritos[$meta]; |
2505 | 2524 | if($t && !in_array($t,$gruposusr)){ | ... | ... |
classesphp/mapa_controle.php
... | ... | @@ -47,7 +47,7 @@ Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo |
47 | 47 | e/ou modificá-lo sob os termos da Licença Pública Geral |
48 | 48 | GNU conforme publicada pela Free Software Foundation; |
49 | 49 | |
50 | -Este programa é distribuído na expectativa //TODO MANTEMDADOSREGIAO | |
50 | +Este programa é distribuído na expectativa | |
51 | 51 | de que seja útil, |
52 | 52 | porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita |
53 | 53 | de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. |
... | ... | @@ -112,8 +112,7 @@ include_once("pega_variaveis.php"); |
112 | 112 | $interfaceTemp = $interface; |
113 | 113 | // |
114 | 114 | //inicializa a sessão |
115 | -//TEMA2SLD é usado por datadownload.htm //TODO MANTEMDADOSREGIAO | |
116 | - | |
115 | +//TEMA2SLD é usado por datadownload.htm | |
117 | 116 | // |
118 | 117 | if ($funcao != "criaMapa" && $funcao != "TEMA2SLD"){ |
119 | 118 | session_name("i3GeoPHP"); | ... | ... |
temas/povoado.map
1 | -MAP | |
2 | - | |
3 | - | |
4 | - FONTSET "../symbols/fontes.txt" | |
5 | - SYMBOLSET "../symbols/simbolos.sym" | |
6 | - LAYER | |
7 | - CONNECTION "" | |
8 | - DATA "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\sc22\povoado.shp" | |
9 | - METADATA | |
10 | - "temporizador" "5" | |
11 | - "cache" "" | |
12 | - "ltempoitemimagem" "" | |
13 | - "CLASSE" "SIM" | |
14 | - "ltempoitemdescricao" "" | |
15 | - "palletestep" "" | |
16 | - "ltempoiteminicio" "" | |
17 | - "permitekmz" "sim" | |
18 | - "ltempoitemtip" "" | |
19 | - "description_template" "" | |
20 | - "ltempoitemtitulo" "" | |
21 | - "iconetema" "" | |
22 | - "ltempoitemlink" "" | |
23 | - "palletefile" "" | |
24 | - "permitedownload" "sim" | |
25 | - "ltempoformatodata" "" | |
26 | - "ltempoitemicone" "" | |
27 | - "permitecomentario" "NAO" | |
28 | - "download" "SIM" | |
29 | - "arquivodownload" "" | |
30 | - "arquivokmz" "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\povoado.kmz" | |
31 | - "permitekml" "sim" | |
32 | - "permiteogc" "" | |
33 | - "TEMA" "Povoado" | |
34 | - "editorsql" "" | |
35 | - "ltempoitemfim" "" | |
36 | - "legendaimg" "http://www.rockingsmileys.com/wp-content/uploads/2011/03/Happy_eyebrowes_smileys-150x150.png" | |
37 | - END | |
38 | - NAME "povoado" | |
39 | - STATUS OFF | |
40 | - TYPE POINT | |
41 | - UNITS METERS | |
42 | - CLASS | |
43 | - NAME "" | |
44 | - STYLE | |
45 | - ANGLE 360 | |
46 | - COLOR 0 0 0 | |
47 | - SIZE 5 | |
48 | - SYMBOL "ponto" | |
49 | - WIDTH 1 | |
50 | - END | |
51 | - END | |
52 | - END | |
53 | -END | |
1 | +MAP | |
2 | + FONTSET "../symbols/fontes.txt" | |
3 | + SYMBOLSET "../symbols/simbolos.sym" | |
4 | + LAYER | |
5 | + CONNECTION "" | |
6 | + DATA "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\sc22\povoado.shp" | |
7 | + METADATA | |
8 | + "METAESTAT_ID_MEDIDA_VARIAVEL" "" | |
9 | + "ltempoitemimagem" "" | |
10 | + "cache" "" | |
11 | + "ltempoitemdescricao" "" | |
12 | + "CLASSE" "SIM" | |
13 | + "ltempoiteminicio" "" | |
14 | + "palletestep" "" | |
15 | + "ltempoitemtip" "" | |
16 | + "permitekmz" "sim" | |
17 | + "temporizador" "5" | |
18 | + "iconetema" "" | |
19 | + "ltempoitemtitulo" "" | |
20 | + "description_template" "" | |
21 | + "ltempoitemlink" "" | |
22 | + "METAESTAT_CODIGO_TIPO_REGIAO" "" | |
23 | + "palletefile" "" | |
24 | + "ltempoformatodata" "" | |
25 | + "permitedownload" "sim" | |
26 | + "permitecomentario" "NAO" | |
27 | + "ltempoitemicone" "" | |
28 | + "metaestat" "" | |
29 | + "download" "SIM" | |
30 | + "arquivokmz" "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\povoado.kmz" | |
31 | + "arquivodownload" "" | |
32 | + "permiteogc" "" | |
33 | + "permitekml" "sim" | |
34 | + "TEMA" "Povoado" | |
35 | + "editorsql" "" | |
36 | + "legendaimg" "http://www.rockingsmileys.com/wp-content/uploads/2011/03/Happy_eyebrowes_smileys-150x150.png" | |
37 | + "ltempoitemfim" "" | |
38 | + END # METADATA | |
39 | + NAME "povoado" | |
40 | + STATUS OFF | |
41 | + TILEITEM "location" | |
42 | + TYPE POINT | |
43 | + UNITS METERS | |
44 | + CLASS | |
45 | + NAME "" | |
46 | + STYLE | |
47 | + COLOR 0 0 0 | |
48 | + OFFSET 0 0 | |
49 | + SIZE 5 | |
50 | + SYMBOL "ponto" | |
51 | + END # STYLE | |
52 | + END # CLASS | |
53 | + END # LAYER | |
54 | + | |
55 | +END # MAP | |
56 | + | ... | ... |