Commit 5b2896c513fb9a6a13c5310444429e71732032c6
1 parent
3ecbded3
Exists in
master
and in
7 other branches
Inclusão do controle de acesso por grupos de usuários na definição dos mapfiles
Showing
14 changed files
with
295 additions
and
169 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/html/editormapfile.html
| ... | ... | @@ -74,6 +74,8 @@ body { |
| 74 | 74 | as características de cada LAYER nas opções |
| 75 | 75 | abaixo. <br> Para incluir o tema nos menus, <a |
| 76 | 76 | href='arvore.html'>edite a árvore de temas </a> <br> |
| 77 | + <p>Importante: a restrição ao tema por meio da definição de grupos de usuários não bloqueia o acesso por meio de download, WMS, KML, etc. | |
| 78 | + Para bloquear esse tipo de acesso é necessário alterar as opções específicas. Por padrão, esses serviços são habilitados para qualquer usuário, não sendo possível bloquear apenas para determinados grupos. | |
| 77 | 79 | <div id="letras"></div> |
| 78 | 80 | <p>Mapfiles (arquivos .map existentes no diretório i3geo/temas):</p> |
| 79 | 81 | <div id="tabela" style="left: -5px;"></div> | ... | ... |
admin/js/arvore.js
| ... | ... | @@ -854,10 +854,13 @@ function gravaDados(tipo,id) |
| 854 | 854 | } |
| 855 | 855 | if(tipo == "raizmenu" || tipo == "raizgrupo") |
| 856 | 856 | { |
| 857 | - var texto = obj.options[obj.selectedIndex].text; | |
| 858 | - var no = tree.getNodeByProperty("id_raiz",id); | |
| 859 | - no.getContentEl().getElementsByTagName("span")[0].innerHTML = texto; | |
| 860 | - no.html = no.getContentEl().innerHTML; | |
| 857 | + var obje = document.getElementById("Eid_tema"); | |
| 858 | + if(obje){ | |
| 859 | + var texto = obje.options[obje.selectedIndex].text; | |
| 860 | + var no = tree.getNodeByProperty("id_raiz",id); | |
| 861 | + no.getContentEl().getElementsByTagName("span")[0].innerHTML = texto; | |
| 862 | + no.html = no.getContentEl().innerHTML; | |
| 863 | + } | |
| 861 | 864 | } |
| 862 | 865 | core_carregando("desativa"); |
| 863 | 866 | } | ... | ... |
admin/php/classe_arvore.php
| ... | ... | @@ -39,6 +39,8 @@ Classe utilizada para compor a &aacute;rvore de temas ou obter dados espec&iacut |
| 39 | 39 | */ |
| 40 | 40 | class Arvore |
| 41 | 41 | { |
| 42 | + //temas com acesso restrito e que nao podem ser acessados pelo usuario que esta logado | |
| 43 | + public $temassindevidos; | |
| 42 | 44 | protected $locaplic; |
| 43 | 45 | //subgrupos que tem pelo menos um tema |
| 44 | 46 | //public $sql_subgrupos = "select i3geoadmin_subgrupos.nome_subgrupo,i3geoadmin_n2.id_n2,i3geoadmin_n2.publicado,i3geoadmin_n2.n2_perfil from i3geoadmin_n2 LEFT JOIN i3geoadmin_subgrupos ON i3geoadmin_n2.id_subgrupo = i3geoadmin_subgrupos.id_subgrupo "; |
| ... | ... | @@ -73,40 +75,36 @@ class Arvore |
| 73 | 75 | if(!empty($esquemaadmin)){ |
| 74 | 76 | $this->esquemaadmin = $esquemaadmin."."; |
| 75 | 77 | } |
| 76 | - if(!isset($convUTF)) | |
| 77 | - { | |
| 78 | + if(!isset($convUTF)){ | |
| 78 | 79 | $convUTF = true; |
| 79 | 80 | } |
| 80 | 81 | $this->convUTF = $convUTF; |
| 81 | 82 | $this->dbh = $dbh; |
| 82 | 83 | |
| 83 | 84 | $this->idioma = $idioma; |
| 84 | - if($idioma == "pt") | |
| 85 | - { | |
| 85 | + if($idioma == "pt"){ | |
| 86 | 86 | $coluna = "nome_grupo"; |
| 87 | 87 | } |
| 88 | - else | |
| 89 | - {$coluna = $idioma; | |
| 88 | + else{ | |
| 89 | + $coluna = $idioma; | |
| 90 | 90 | } |
| 91 | 91 | $this->sql_grupos = "select i3geoadmin_grupos.$coluna as nome_grupo,id_n1,id_menu,i3geoadmin_n1.publicado,n1_perfil from ".$this->esquemaadmin."i3geoadmin_n1 LEFT JOIN ".$this->esquemaadmin."i3geoadmin_grupos ON i3geoadmin_n1.id_grupo = i3geoadmin_grupos.id_grupo "; |
| 92 | 92 | |
| 93 | - if($idioma == "pt") | |
| 94 | - { | |
| 93 | + if($idioma == "pt"){ | |
| 95 | 94 | $coluna = "nome_subgrupo"; |
| 96 | 95 | } |
| 97 | - else | |
| 98 | - {$coluna = $idioma; | |
| 96 | + else{ | |
| 97 | + $coluna = $idioma; | |
| 99 | 98 | } |
| 100 | 99 | $this->sql_subgrupos = "select i3geoadmin_subgrupos.$coluna as nome_subgrupo,i3geoadmin_n2.id_n2,i3geoadmin_n2.publicado,i3geoadmin_n2.n2_perfil from ".$this->esquemaadmin."i3geoadmin_n2 LEFT JOIN ".$this->esquemaadmin."i3geoadmin_subgrupos ON i3geoadmin_n2.id_subgrupo = i3geoadmin_subgrupos.id_subgrupo "; |
| 101 | 100 | |
| 102 | - if($idioma == "pt") | |
| 103 | - { | |
| 101 | + if($idioma == "pt"){ | |
| 104 | 102 | $coluna = "nome_tema"; |
| 105 | 103 | } |
| 106 | - else | |
| 107 | - {$coluna = $idioma; | |
| 104 | + else{ | |
| 105 | + $coluna = $idioma; | |
| 108 | 106 | } |
| 109 | - $this->sql_temasraiz = "select id_raiz,i3geoadmin_raiz.id_tema,$coluna as nome_tema,tipoa_tema,perfil FROM ".$this->esquemaadmin."i3geoadmin_raiz LEFT JOIN ".$this->esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = i3geoadmin_raiz.id_tema "; | |
| 107 | + $this->sql_temasraiz = "select codigo_tema,id_raiz,i3geoadmin_raiz.id_tema,$coluna as nome_tema,tipoa_tema,perfil FROM ".$this->esquemaadmin."i3geoadmin_raiz LEFT JOIN ".$this->esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = i3geoadmin_raiz.id_tema "; | |
| 110 | 108 | $this->sql_temasSubgrupo = "select i3geoadmin_temas.tipoa_tema, i3geoadmin_temas.codigo_tema,i3geoadmin_temas.tags_tema,i3geoadmin_n3.id_n3,i3geoadmin_temas.$coluna as nome_tema,i3geoadmin_n3.publicado,i3geoadmin_n3.n3_perfil,i3geoadmin_n3.id_tema,i3geoadmin_temas.download_tema,i3geoadmin_temas.ogc_tema from ".$this->esquemaadmin."i3geoadmin_n3 LEFT JOIN ".$this->esquemaadmin."i3geoadmin_temas ON i3geoadmin_n3.id_tema = i3geoadmin_temas.id_tema "; |
| 111 | 109 | |
| 112 | 110 | //$this->sql_temas = "select kmz_tema,nacessos,id_tema,kml_tema,ogc_tema,download_tema,tags_tema,tipoa_tema,link_tema,desc_tema,$coluna as nome_tema,codigo_tema from i3geoadmin_temas "; |
| ... | ... | @@ -120,10 +118,13 @@ class Arvore |
| 120 | 118 | $this->editor = false; |
| 121 | 119 | $this->editor = $this->verificaOperacaoSessao("admin/php/classe_arvore/editor"); |
| 122 | 120 | $this->pubsql = " (publicado != 'NAO' or publicado isnull) and "; |
| 123 | - if($this->editor) | |
| 124 | - { | |
| 121 | + if($this->editor){ | |
| 125 | 122 | $this->pubsql = ""; |
| 126 | 123 | } |
| 124 | + if(!function_exists("listaTemasIndevidos")){ | |
| 125 | + include_once(__DIR__."/../../classesphp/funcoes_gerais.php"); | |
| 126 | + } | |
| 127 | + $this->temasindevidos = listaTemasIndevidos(); | |
| 127 | 128 | } |
| 128 | 129 | function __destruct() |
| 129 | 130 | { |
| ... | ... | @@ -131,6 +132,20 @@ class Arvore |
| 131 | 132 | $this->dbhw = null; |
| 132 | 133 | } |
| 133 | 134 | /* |
| 135 | + Function: validaTemas | |
| 136 | + | |
| 137 | + Remove de um array os temas que nao sao permitidos ao usuario atualmente logado | |
| 138 | + */ | |
| 139 | + function validaTemas($linhas,$id){ | |
| 140 | + $res = array(); | |
| 141 | + foreach($linhas as $l){ | |
| 142 | + if(!in_array($l[$id],$this->temasindevidos)){ | |
| 143 | + array_push($res,$l); | |
| 144 | + } | |
| 145 | + } | |
| 146 | + return $res; | |
| 147 | + } | |
| 148 | + /* | |
| 134 | 149 | Function: pegaListaDeMenus |
| 135 | 150 | |
| 136 | 151 | Retorna a lista de menus |
| ... | ... | @@ -145,20 +160,20 @@ class Arvore |
| 145 | 160 | */ |
| 146 | 161 | function pegaListaDeMenus($perfil) |
| 147 | 162 | { |
| 148 | - if($this->idioma == "pt") | |
| 149 | - { | |
| 163 | + if($this->idioma == "pt"){ | |
| 150 | 164 | $coluna = "nome_menu"; |
| 151 | 165 | } |
| 152 | - else | |
| 153 | - {$coluna = $this->idioma; | |
| 166 | + else{ | |
| 167 | + $coluna = $this->idioma; | |
| 154 | 168 | } |
| 155 | 169 | if($this->editor == true) |
| 156 | 170 | { |
| 157 | 171 | $perfil = ""; |
| 158 | 172 | $sql = "SELECT publicado_menu,'' as perfil_menu,aberto,desc_menu,id_menu,$coluna as nome_menu from ".$this->esquemaadmin."i3geoadmin_menus order by nome_menu"; |
| 159 | 173 | } |
| 160 | - else | |
| 174 | + else{ | |
| 161 | 175 | $sql = "SELECT publicado_menu,perfil_menu,aberto,desc_menu,id_menu,$coluna as nome_menu from ".$this->esquemaadmin."i3geoadmin_menus where publicado_menu != 'NAO' or publicado_menu isnull order by nome_menu"; |
| 176 | + } | |
| 162 | 177 | $regs = $this->execSQL($sql); |
| 163 | 178 | $resultado = array(); |
| 164 | 179 | foreach($regs as $reg) |
| ... | ... | @@ -460,10 +475,10 @@ class Arvore |
| 460 | 475 | |
| 461 | 476 | {array} |
| 462 | 477 | */ |
| 463 | - function pegaGruposMenu($id_menu) | |
| 464 | - { | |
| 478 | + function pegaGruposMenu($id_menu){ | |
| 465 | 479 | $grupos = $this->execSQL($this->sql_grupos."where ".$this->pubsql." id_menu='$id_menu' order by ordem"); |
| 466 | 480 | $raiz = $this->execSQL($this->sql_temasraiz."where i3geoadmin_raiz.id_menu='$id_menu' and i3geoadmin_raiz.nivel = 0 order by ordem"); |
| 481 | + $raiz = $this->validaTemas($raiz,"codigo_tema"); | |
| 467 | 482 | return array("raiz"=>$raiz,"grupos"=>$grupos); |
| 468 | 483 | } |
| 469 | 484 | /* |
| ... | ... | @@ -485,6 +500,7 @@ class Arvore |
| 485 | 500 | { |
| 486 | 501 | $subgrupos = $this->execSQL($this->sql_subgrupos."where ".$this->pubsql." i3geoadmin_n2.id_n1='$id_n1' order by ordem"); |
| 487 | 502 | $raiz = $this->execSQL($this->sql_temasraiz."where i3geoadmin_raiz.nivel = 1 and i3geoadmin_raiz.id_nivel = $id_n1 order by ordem"); |
| 503 | + $raiz = $this->validaTemas($raiz,"codigo_tema"); | |
| 488 | 504 | return array("raiz"=>$raiz,"subgrupos"=>$subgrupos); |
| 489 | 505 | } |
| 490 | 506 | /* |
| ... | ... | @@ -504,7 +520,9 @@ class Arvore |
| 504 | 520 | */ |
| 505 | 521 | function pegaTemasRaizGrupo($id_menu,$id_n1) |
| 506 | 522 | { |
| 507 | - return $this->execSQL($this->sql_temasraiz."where i3geoadmin_raiz.nivel = 1 and i3geoadmin_raiz.id_nivel = $id_n1 order by ordem"); | |
| 523 | + $raiz = $this->execSQL($this->sql_temasraiz."where i3geoadmin_raiz.nivel = 1 and i3geoadmin_raiz.id_nivel = $id_n1 order by ordem"); | |
| 524 | + $raiz = $this->validaTemas($raiz,"codigo_tema"); | |
| 525 | + return $raiz; | |
| 508 | 526 | } |
| 509 | 527 | /* |
| 510 | 528 | Function: pegaTema |
| ... | ... | @@ -548,7 +566,9 @@ class Arvore |
| 548 | 566 | */ |
| 549 | 567 | function pegaTemasSubGrupo($id_n2) |
| 550 | 568 | { |
| 551 | - return $this->execSQL($this->sql_temasSubgrupo."where ".$this->pubsql." i3geoadmin_n3.id_n2='$id_n2' order by ordem"); | |
| 569 | + $temas = $this->execSQL($this->sql_temasSubgrupo."where ".$this->pubsql." i3geoadmin_n3.id_n2='$id_n2' order by ordem"); | |
| 570 | + $temas = $this->validaTemas($temas,"codigo_tema"); | |
| 571 | + return $temas; | |
| 552 | 572 | } |
| 553 | 573 | /* |
| 554 | 574 | Function: formataGruposMenu |
| ... | ... | @@ -573,12 +593,10 @@ class Arvore |
| 573 | 593 | $dados = $this->pegaGruposMenu($id_menu); |
| 574 | 594 | $resultado = array(); |
| 575 | 595 | $temasraiz = array(); |
| 576 | - foreach($dados["raiz"] as $temar) | |
| 577 | - { | |
| 596 | + foreach($dados["raiz"] as $temar){ | |
| 578 | 597 | $temasraiz[] = $this->formataTema($temar["id_tema"]); |
| 579 | 598 | } |
| 580 | - if(count($dados["grupos"]) == 0) | |
| 581 | - { | |
| 599 | + if(count($dados["grupos"]) == 0){ | |
| 582 | 600 | $grupos[] = array(); |
| 583 | 601 | } |
| 584 | 602 | foreach($dados["grupos"] as $grupo) | ... | ... |
admin/php/editormapfile.php
| ... | ... | @@ -1080,6 +1080,7 @@ function refazerLayer() |
| 1080 | 1080 | $nl = ms_newLayerObj($mapatema,$layernovo); |
| 1081 | 1081 | $nl->set("name",$codigomap); |
| 1082 | 1082 | $nl->setmetadata("nomeoriginal",""); |
| 1083 | + $nl->setmetadata("temaoriginal",""); | |
| 1083 | 1084 | $nl->setmetadata("olopacity",""); |
| 1084 | 1085 | $nl->setmetadata("olstatus",""); |
| 1085 | 1086 | $nl->setmetadata("gmopacity",""); |
| ... | ... | @@ -1283,7 +1284,7 @@ function adicionaGrupoUsrTema(){ |
| 1283 | 1284 | if($q){ |
| 1284 | 1285 | $teste = $q->fetchAll(); |
| 1285 | 1286 | if(count($teste) == 0){ |
| 1286 | - $dbhw->query("INSERT INTO ".$esquemaadmin."i3geousr_grupotema (id_tema,id_grupo) VALUES ($id_tema,$id_grupo)"); | |
| 1287 | + $dbhw->query("INSERT INTO ".$esquemaadmin."i3geousr_grupotema (id_tema,id_grupo) VALUES ($id_tema , $id_grupo)"); | |
| 1287 | 1288 | } |
| 1288 | 1289 | } |
| 1289 | 1290 | return "ok"; | ... | ... |
admin/php/login.php
| ... | ... | @@ -106,6 +106,7 @@ switch (strtoupper($funcao)) |
| 106 | 106 | $_SESSION["senha"] = $senha; |
| 107 | 107 | $_SESSION["papeis"] = $teste["papeis"]; |
| 108 | 108 | $_SESSION["operacoes"] = $teste["operacoes"]; |
| 109 | + $_SESSION["gruposusr"] = $teste["gruposusr"]; | |
| 109 | 110 | $fingerprint = 'I3GEOLOGIN' . $_SERVER['HTTP_USER_AGENT']; |
| 110 | 111 | //var_dump($_SESSION["operacoes"]);exit; |
| 111 | 112 | $_SESSION['fingerprint'] = md5($fingerprint . session_id()); |
| ... | ... | @@ -238,6 +239,7 @@ function autenticaUsuario($usuario,$senha){ |
| 238 | 239 | if(count($dados) > 0){ |
| 239 | 240 | $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario where id_usuario = ".$dados[0]["id_usuario"],$locaplic); |
| 240 | 241 | $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"],$locaplic); |
| 242 | + $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupousuario where id_usuario = ".$dados[0]["id_usuario"]); | |
| 241 | 243 | $operacoes = array(); |
| 242 | 244 | foreach($op as $o){ |
| 243 | 245 | $operacoes[$o["codigo"]] = true; |
| ... | ... | @@ -246,7 +248,11 @@ function autenticaUsuario($usuario,$senha){ |
| 246 | 248 | foreach($pa as $p){ |
| 247 | 249 | $papeis[] = $p["id_papel"]; |
| 248 | 250 | } |
| 249 | - $r = array("usuario"=>$dados[0],"papeis"=>$papeis,"operacoes"=>$operacoes); | |
| 251 | + $gruposusr = array(); | |
| 252 | + foreach($gr as $p){ | |
| 253 | + $gruposusr[] = $p["id_grupo"]; | |
| 254 | + } | |
| 255 | + $r = array("usuario"=>$dados[0],"papeis"=>$papeis,"operacoes"=>$operacoes,"gruposusr"=>$gruposusr); | |
| 250 | 256 | return $r; |
| 251 | 257 | } |
| 252 | 258 | else{ | ... | ... |
classesphp/classe_mapa.php
| ... | ... | @@ -927,6 +927,8 @@ Ao ser adicionado, todos os layers do arquivo indicado ser&atilde;o acrescentado |
| 927 | 927 | Os layers que formam grupos também são processados, tendo seus nomes alterados de acordo. |
| 928 | 928 | Cada novo layer receberá um novo nome, definido de forma aleatória. |
| 929 | 929 | Os nomes dos temas podem conter o caminho completo do mapfile. |
| 930 | +O nome original do LAYER (NAME) sera armazenado no metadata nomeoriginal | |
| 931 | +O nome do tema (mapfile) original sera armazenado no metadata temaoriginal | |
| 930 | 932 | |
| 931 | 933 | Parametros: |
| 932 | 934 | |
| ... | ... | @@ -984,6 +986,7 @@ $random - indica se os nomes dos novos layers ser&atilde;o modificados ou nao |
| 984 | 986 | autoClasses($nlayer,$this->mapa); |
| 985 | 987 | $nlayer->set("status",MS_DEFAULT); |
| 986 | 988 | $nlayer->setmetadata("nomeoriginal",$nlayer->name); |
| 989 | + $nlayer->setmetadata("temaoriginal",str_replace(".map","",basename($nomemap))); | |
| 987 | 990 | $nlayer->set("name",$nomeunico[$n]); |
| 988 | 991 | //altera o nome do grupo se existir |
| 989 | 992 | if ($nlayer->group != " " && $nlayer->group != "" ) | ... | ... |
classesphp/funcoes_gerais.php
| ... | ... | @@ -3049,4 +3049,109 @@ function permissoesarquivo($arquivo){ |
| 3049 | 3049 | |
| 3050 | 3050 | return $info; |
| 3051 | 3051 | } |
| 3052 | +/* | |
| 3053 | +Function: validaAcessoTemas | |
| 3054 | + | |
| 3055 | +Remocao dos layers com restricoes de acesso registradas no sistema de controle de usuarios | |
| 3056 | +*/ | |
| 3057 | +function validaAcessoTemas($map_file){ | |
| 3058 | + $indevidos = listaLayersIndevidos($map_file); | |
| 3059 | + if(count($indevidos) > 0){ | |
| 3060 | + $m = ms_newMapObj($map_file); | |
| 3061 | + foreach($indevidos as $i){ | |
| 3062 | + $l = $m->getlayerbyname($i); | |
| 3063 | + $l->set("status",MS_DELETE); | |
| 3064 | + } | |
| 3065 | + $m->save($map_file); | |
| 3066 | + } | |
| 3067 | + return; | |
| 3068 | +} | |
| 3069 | +/* | |
| 3070 | +Function: listaTemasRestritos | |
| 3071 | + | |
| 3072 | +Lista os temas que possuem restricao de acesso para apenas alguns grupos de usuarios | |
| 3073 | + | |
| 3074 | +O retorno e um array com a chave sendo o codigo do tema e o valor um array com a lista de ids de grupos que podem acessar | |
| 3075 | +*/ | |
| 3076 | +function listaTemasRestritos(){ | |
| 3077 | + include_once(__DIR__."/../admin/php/admin.php"); | |
| 3078 | + $res = pegaDados("select id_grupo,codigo_tema from ".$esquemaadmin."i3geousr_grupotema as gt,".$esquemaadmin."i3geoadmin_temas as te where gt.id_tema = te.id_tema"); | |
| 3079 | + $restritos = array(); | |
| 3080 | + foreach ($res as $r){ | |
| 3081 | + if($restritos[$r["codigo_tema"]]){ | |
| 3082 | + array_push($restritos[$r["codigo_tema"]],$r["id_grupo"]); | |
| 3083 | + } | |
| 3084 | + else{ | |
| 3085 | + $restritos[$r["codigo_tema"]] = array($r["id_grupo"]); | |
| 3086 | + } | |
| 3087 | + } | |
| 3088 | + return $restritos; | |
| 3089 | +} | |
| 3090 | +/* | |
| 3091 | +Function: listaLayersIndevidos | |
| 3092 | + | |
| 3093 | +Lista os layers de um mapfile que sao restritos e que nao sao permitidos ao usuario logado | |
| 3094 | +*/ | |
| 3095 | +function listaLayersIndevidos($map_file){ | |
| 3096 | + $indevidos = array(); | |
| 3097 | + $restritos = listaTemasRestritos(); | |
| 3098 | + if(count($restritos) > 0){ | |
| 3099 | + $gruposusr = listaGruposUsrLogin(); | |
| 3100 | + $m = ms_newMapObj($map_file); | |
| 3101 | + $c = $m->numlayers; | |
| 3102 | + for ($i=0;$i < $c;++$i) { | |
| 3103 | + $layer = $m->getlayer($i); | |
| 3104 | + $meta = $layer->getmetadata("temaoriginal"); | |
| 3105 | + if($meta != ""){ | |
| 3106 | + $t = $restritos[$meta]; | |
| 3107 | + if(!in_array($t,$gruposusr)){ | |
| 3108 | + array_push($indevidos,$layer->name); | |
| 3109 | + } | |
| 3110 | + } | |
| 3111 | + } | |
| 3112 | + } | |
| 3113 | + return $indevidos; | |
| 3114 | +} | |
| 3115 | +/* | |
| 3116 | + Function: listaTemasIndevidos | |
| 3117 | + | |
| 3118 | +Lista os temas que sao restritos e que nao sao permitidos ao usuario logado | |
| 3119 | +*/ | |
| 3120 | +function listaTemasIndevidos(){ | |
| 3121 | + $indevidos = array(); | |
| 3122 | + $restritos = listaTemasRestritos(); | |
| 3123 | + if(count($restritos) > 0){ | |
| 3124 | + $gruposusr = listaGruposUsrLogin(); | |
| 3125 | + $c = count($gruposusr); | |
| 3126 | + reset($restritos); | |
| 3127 | + while (list($key, $val) = each($restritos)) { | |
| 3128 | + //var_dump($val);var_dump($gruposusr);exit; | |
| 3129 | + if(array_search($gruposusr,$val) === true || $c == 0){ | |
| 3130 | + array_push($indevidos,$key); | |
| 3131 | + } | |
| 3132 | + } | |
| 3133 | + } | |
| 3134 | + return $indevidos; | |
| 3135 | +} | |
| 3136 | +/* | |
| 3137 | + Function: listaGruposUsrLogin | |
| 3138 | + | |
| 3139 | +Lista os os grupos ao qual pertence o usuario atualmente logado | |
| 3140 | +*/ | |
| 3141 | +function listaGruposUsrLogin(){ | |
| 3142 | + if(empty($_COOKIE["i3geocodigologin"])){ | |
| 3143 | + return array(); | |
| 3144 | + } | |
| 3145 | + session_write_close(); | |
| 3146 | + $nameatual = session_name(); | |
| 3147 | + $idatual = session_id(); | |
| 3148 | + session_name("i3GeoLogin"); | |
| 3149 | + session_id($_COOKIE["i3geocodigologin"]); | |
| 3150 | + session_start(); | |
| 3151 | + $res = $_SESSION["gruposusr"]; | |
| 3152 | + session_name("$nameatual"); | |
| 3153 | + session_id($idatual); | |
| 3154 | + session_start(); | |
| 3155 | + return $res; | |
| 3156 | +} | |
| 3052 | 3157 | ?> | ... | ... |
classesphp/mapa_controle.php
| ... | ... | @@ -159,7 +159,9 @@ if (isset($debug) && strtolower($debug) == "sim") |
| 159 | 159 | //se as extensões já estiverem carregadas no PHP, vc pode comentar essa linha para que o processamento fique mais rápido |
| 160 | 160 | // |
| 161 | 161 | include_once ("carrega_ext.php"); |
| 162 | -include_once("funcoes_gerais.php"); | |
| 162 | +if(!function_exists("sobeAnno")){ | |
| 163 | + include_once("funcoes_gerais.php"); | |
| 164 | +} | |
| 163 | 165 | if ($funcao == "criaMapa") |
| 164 | 166 | { |
| 165 | 167 | session_name("i3GeoPHP"); |
| ... | ... | @@ -182,6 +184,8 @@ if ($funcao == "criaMapa") |
| 182 | 184 | include_once("ms_criamapa.php"); |
| 183 | 185 | $_SESSION["interface"] = $interfaceTemp; |
| 184 | 186 | cpjson(session_id()); |
| 187 | + //ver funcoes_gerais.php | |
| 188 | + validaAcessoTemas($_SESSION("map_file")); | |
| 185 | 189 | return; |
| 186 | 190 | } |
| 187 | 191 | if (!isset($map_file)) |
| ... | ... | @@ -249,20 +253,6 @@ Inicia o mapa, pegando os par&acirc;metros necess&aacute;rios para a montagem in |
| 249 | 253 | iniciaMapa(); |
| 250 | 254 | break; |
| 251 | 255 | /* |
| 252 | -Valor: MONTAFLAMINGO | |
| 253 | - | |
| 254 | -Gera o arquivo xml de configuração para a interface Flamingo. | |
| 255 | - | |
| 256 | -O arquivo xml é gravado no diretório temporário do mapserver e contém a string de conexão com o gerador de webservices classesphp/flamingoogc.php | |
| 257 | -Esse gerador, recebe como parâmetro o id da seção atual e transforma o mapfile atual em um webservcie capaz de ser entendido pelo flamingo. | |
| 258 | - | |
| 259 | -<flamingo.inc> | |
| 260 | -*/ | |
| 261 | - case "MONTAFLAMINGO": | |
| 262 | - include("flamingo.inc"); | |
| 263 | - $retorno = $host."/ms_tmp/".basename(dirname($map_file))."/flamingo.xml"; | |
| 264 | - break; | |
| 265 | -/* | |
| 266 | 256 | Valor: OPENLAYERS |
| 267 | 257 | |
| 268 | 258 | Prepara o mapa atual para funcionar na interface openlayers. |
| ... | ... | @@ -1055,11 +1045,11 @@ Adiciona um novo tema ao mapa. |
| 1055 | 1045 | copiaSeguranca($map_file); |
| 1056 | 1046 | $m = new Mapa($map_file); |
| 1057 | 1047 | $salvar = $m->adicionaTema($temas,$locaplic); |
| 1058 | - if($salvar) | |
| 1059 | - { | |
| 1048 | + if($salvar){ | |
| 1060 | 1049 | $m->salva(); |
| 1061 | 1050 | $_SESSION["contadorsalva"]++; |
| 1062 | 1051 | } |
| 1052 | + validaAcessoTemas($map_file); | |
| 1063 | 1053 | $retorno = "ok"; |
| 1064 | 1054 | /* |
| 1065 | 1055 | if($interface != "openlayers"){ | ... | ... |
classesphp/mapa_inicia.php
| ... | ... | @@ -103,6 +103,14 @@ Retorno: |
| 103 | 103 | function iniciaMapa() |
| 104 | 104 | { |
| 105 | 105 | global $emailInstituicao,$openid,$interfacePadrao,$mensagemInicia,$kmlurl,$tituloInstituicao,$tempo,$navegadoresLocais,$locaplic,$embedLegenda,$map_file,$mapext,$w,$h,$R_path,$locmapserv,$utilizacgi,$expoeMapfile,$interface; |
| 106 | + // | |
| 107 | + //verifica se algum tema e restrito a determinado usuario | |
| 108 | + //as funcoes de validacao encontram-se em funcoes_gerais.php | |
| 109 | + // | |
| 110 | + if(!function_exists("validaAcessoTemas")){ | |
| 111 | + include_once("funcoes_gerais.php"); | |
| 112 | + } | |
| 113 | + validaAcessoTemas($_SESSION["map_file"]); | |
| 106 | 114 | if(!isset($kmlurl)) |
| 107 | 115 | {$kmlurl = "";} |
| 108 | 116 | error_reporting(0); | ... | ... |
ferramentas/loginusuario/index.js
| ... | ... | @@ -113,7 +113,7 @@ i3GEOF.loginusuario = { |
| 113 | 113 | '<input id=i3geosenha type=password style="width:250px;" value=""/><br>' + |
| 114 | 114 | '<p class="paragrafo" ><input id=i3GEOFloginusuario size=20 type=button value="'+$trad("x29")+'" /> <input id=i3GEOFlogoutusuario size=20 type=button value="Logout" />' + |
| 115 | 115 | '<p class="paragrafo" onclick="i3GEOF.loginusuario.recuperarSenha()" style="cursor:pointer;color:blue;">'+$trad("x32")+'</p>' + |
| 116 | - '<p class="paragrafo" onclick="i3GEOF.loginusuario.alterarSenha()" style="cursor:pointer;color:blue;">'+$trad("x52")+'</p>'; | |
| 116 | + '<p class="paragrafo" onclick="i3GEOF.loginusuario.alterarSenha()" style="cursor:pointer;color:blue;">'+$trad("x52")+'</p><br>'; | |
| 117 | 117 | return ins; |
| 118 | 118 | }, |
| 119 | 119 | /* | ... | ... |
ms_criamapa.php
| ... | ... | @@ -647,7 +647,8 @@ function incluiTemasIniciais() |
| 647 | 647 | {$existeraster = true;} |
| 648 | 648 | if ($layern->name == "estadosl") |
| 649 | 649 | {$layern->set("data",$locaplic."/aplicmap/dados/estados.shp");} |
| 650 | - $layern->setmetadata("NOMEORIGINAL",$layern->name); | |
| 650 | + $layern->setmetadata("nomeoriginal",$layern->name); | |
| 651 | + $layern->setmetadata("temaoriginal",str_replace(".map","",basename($arqtemp))); | |
| 651 | 652 | autoClasses($layern,$mapn); |
| 652 | 653 | // |
| 653 | 654 | //necessário para não alterar a extensão do mapa por esse parâmetro | ... | ... |
temas/acidmap.map
| 1 | 1 | MAP |
| 2 | 2 | |
| 3 | 3 | |
| 4 | - FONTSET "c:\ms4w\apache\htdocs\i3geo/symbols/fontes.txt" | |
| 5 | - SYMBOLSET "c:\ms4w\apache\htdocs\i3geo/symbols/simbolos.sym" | |
| 4 | + FONTSET "../symbols/fontes.txt" | |
| 5 | + SYMBOLSET "../symbols/simbolos.sym" | |
| 6 | 6 | LAYER |
| 7 | 7 | CONNECTION "http://localhost:8080/geoserver/wms?VALUE_COLUMN=VALOR&SERVICE=AMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&FORMAT=image/png&EXCEPTIONS=application/vnd.ogc.se_inimage&TILED=true&TRANSPARENT=FALSE&VALUE_COLUMN=value&SIMPLIFY_METHOD=1&SIMPLIFY_SIZE=400&INTERVALS[]=10,20,45,70,100&INTERVALS_COLORS[]=0xffffff00,0xffb2,0xff00b2,0xffff00b2,0xff0000b2&RENDERER_TYPE=2&INTERPOLATION_STRATEGY=2&RADIUS=32" |
| 8 | 8 | CONNECTIONTYPE WMS | ... | ... |
temas/biomashp.map
| 1 | 1 | MAP |
| 2 | - FONTSET "c:\ms4w\apache\htdocs\i3geo\symbols\fontes.txt" | |
| 3 | - SYMBOLSET "c:\ms4w\apache\htdocs\i3geo\symbols\simbolos.sym" | |
| 4 | - LAYER | |
| 5 | - CONNECTION "" | |
| 6 | - DATA "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\biomas.shp" | |
| 7 | - FOOTER "teste.htm" | |
| 8 | - GROUP "biomashp" | |
| 9 | - HEADER "teste.htm" | |
| 10 | - METADATA | |
| 11 | - "ltempoitemimagem" "" | |
| 12 | - "cache" "SIM" | |
| 13 | - "CLASSE" "SIM" | |
| 14 | - "ltempoitemdescricao" "" | |
| 15 | - "palletestep" "" | |
| 16 | - "ltempoiteminicio" "" | |
| 17 | - "permitekmz" "sim" | |
| 18 | - "ltempoitemtip" "" | |
| 19 | - "iconetema" "http://www.gpsdrive.de/development/map-icons/square.small/leisure/park.png" | |
| 20 | - "description_template" "" | |
| 21 | - "ltempoitemtitulo" "" | |
| 22 | - "ltempoitemlink" "" | |
| 23 | - "palletefile" "" | |
| 24 | - "extensao" "-44 -23 -39 -21" | |
| 25 | - "NOMEORIGINAL" "" | |
| 26 | - "permitedownload" "sim" | |
| 27 | - "ltempoformatodata" "" | |
| 28 | - "ltempoitemicone" "" | |
| 29 | - "download" "SIM" | |
| 30 | - "permitekml" "sim" | |
| 31 | - "permiteogc" "" | |
| 32 | - "convcaracter" "" | |
| 33 | - "TEMA" "bioma shp" | |
| 34 | - "identifica" "NAO" | |
| 35 | - "editorsql" "" | |
| 36 | - "ltempoitemfim" "" | |
| 37 | - END | |
| 38 | - NAME "biomashp" | |
| 39 | - STATUS OFF | |
| 40 | - TEMPLATE "none.htm" | |
| 41 | - OPACITY 50 | |
| 42 | - TYPE POLYGON | |
| 2 | + FONTSET "../symbols/fontes.txt" | |
| 3 | + SYMBOLSET "../symbols/simbolos.sym" | |
| 4 | + LAYER | |
| 5 | + CONNECTION "" | |
| 6 | + DATA "/var/www/geodados/brasil/vegetacao/biomas.shp" | |
| 7 | + FOOTER "teste.htm" | |
| 8 | + GROUP "biomashp" | |
| 9 | + HEADER "teste.htm" | |
| 10 | + METADATA | |
| 11 | + "cache" "SIM" | |
| 12 | + "ltempoitemimagem" "" | |
| 13 | + "ltempoitemdescricao" "" | |
| 14 | + "CLASSE" "SIM" | |
| 15 | + "ltempoiteminicio" "" | |
| 16 | + "palletestep" "" | |
| 17 | + "ltempoitemtip" "" | |
| 18 | + "permitekmz" "sim" | |
| 19 | + "ltempoitemtitulo" "" | |
| 20 | + "description_template" "" | |
| 21 | + "iconetema" "http://www.gpsdrive.de/development/map-icons/square.small/leisure/park.png" | |
| 22 | + "ltempoitemlink" "" | |
| 23 | + "extensao" "-44 -23 -39 -21" | |
| 24 | + "palletefile" "" | |
| 25 | + "NOMEORIGINAL" "" | |
| 26 | + "ltempoformatodata" "" | |
| 27 | + "permitedownload" "sim" | |
| 28 | + "ltempoitemicone" "" | |
| 29 | + "download" "SIM" | |
| 30 | + "permiteogc" "" | |
| 31 | + "permitekml" "sim" | |
| 32 | + "TEMA" "Biomas shapefile" | |
| 33 | + "convcaracter" "" | |
| 34 | + "editorsql" "" | |
| 35 | + "identifica" "NAO" | |
| 36 | + "ltempoitemfim" "" | |
| 37 | + END # METADATA | |
| 38 | + NAME "biomashp" | |
| 39 | + PROCESSING "ITEMS=CD_LEGENDA" | |
| 40 | + STATUS OFF | |
| 41 | + TEMPLATE "none.htm" | |
| 42 | + TILEITEM "location" | |
| 43 | + OPACITY 50 | |
| 44 | + TYPE POLYGON | |
| 43 | 45 | UNITS METERS |
| 44 | - PROCESSING "ITEMS=CD_LEGENDA" | |
| 45 | - CLASS | |
| 46 | - NAME "CAATINGA" | |
| 47 | - EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA') | |
| 48 | - STYLE | |
| 49 | - ANGLE 360 | |
| 50 | - COLOR 21 44 114 | |
| 51 | - SYMBOL 0 | |
| 52 | - WIDTH 1 | |
| 53 | - END | |
| 54 | - TITLE "" | |
| 55 | - END | |
| 56 | - CLASS | |
| 57 | - NAME "PAMPA" | |
| 58 | - EXPRESSION ('[CD_LEGENDA]'eq'PAMPA') | |
| 59 | - STYLE | |
| 60 | - ANGLE 360 | |
| 61 | - COLOR 225 189 199 | |
| 62 | - SYMBOL 0 | |
| 63 | - WIDTH 1 | |
| 64 | - END | |
| 65 | - TITLE "" | |
| 66 | - END | |
| 67 | - CLASS | |
| 68 | - NAME "CERRADO" | |
| 69 | - EXPRESSION ('[CD_LEGENDA]'eq'CERRADO') | |
| 70 | - STYLE | |
| 71 | - ANGLE 360 | |
| 72 | - COLOR 17 235 39 | |
| 73 | - SYMBOL 0 | |
| 74 | - WIDTH 1 | |
| 75 | - END | |
| 76 | - TITLE "" | |
| 77 | - END | |
| 78 | - CLASS | |
| 79 | - NAME "PANTANAL" | |
| 80 | - EXPRESSION ('[CD_LEGENDA]'eq'PANTANAL') | |
| 81 | - STYLE | |
| 82 | - ANGLE 360 | |
| 83 | - COLOR 242 192 145 | |
| 84 | - SYMBOL 0 | |
| 85 | - WIDTH 1 | |
| 86 | - END | |
| 87 | - TITLE "" | |
| 88 | - END | |
| 89 | - CLASS | |
| 90 | - NAME "AMAZONIA" | |
| 91 | - EXPRESSION ('[CD_LEGENDA]'eq'AMAZONIA') | |
| 92 | - STYLE | |
| 93 | - ANGLE 360 | |
| 94 | - COLOR 149 120 37 | |
| 95 | - SYMBOL 0 | |
| 96 | - WIDTH 1 | |
| 97 | - END | |
| 98 | - TITLE "" | |
| 99 | - END | |
| 100 | - CLASS | |
| 101 | - NAME "MATA ATLANTICA" | |
| 102 | - EXPRESSION ('[CD_LEGENDA]'eq'MATA ATLANTICA') | |
| 103 | - STYLE | |
| 104 | - ANGLE 360 | |
| 105 | - COLOR 208 160 125 | |
| 106 | - SYMBOL 0 | |
| 107 | - WIDTH 1 | |
| 108 | - END | |
| 109 | - TITLE "" | |
| 110 | - END | |
| 111 | - END | |
| 112 | - | |
| 113 | -END | |
| 114 | - | |
| 46 | + CLASS | |
| 47 | + NAME "CAATINGA" | |
| 48 | + EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA') | |
| 49 | + STYLE | |
| 50 | + COLOR 21 44 114 | |
| 51 | + OFFSET 0 0 | |
| 52 | + END # STYLE | |
| 53 | + TITLE "" | |
| 54 | + END # CLASS | |
| 55 | + CLASS | |
| 56 | + NAME "PAMPA" | |
| 57 | + EXPRESSION ('[CD_LEGENDA]'eq'PAMPA') | |
| 58 | + STYLE | |
| 59 | + COLOR 225 189 199 | |
| 60 | + OFFSET 0 0 | |
| 61 | + END # STYLE | |
| 62 | + TITLE "" | |
| 63 | + END # CLASS | |
| 64 | + CLASS | |
| 65 | + NAME "CERRADO" | |
| 66 | + EXPRESSION ('[CD_LEGENDA]'eq'CERRADO') | |
| 67 | + STYLE | |
| 68 | + COLOR 17 235 39 | |
| 69 | + OFFSET 0 0 | |
| 70 | + END # STYLE | |
| 71 | + TITLE "" | |
| 72 | + END # CLASS | |
| 73 | + CLASS | |
| 74 | + NAME "PANTANAL" | |
| 75 | + EXPRESSION ('[CD_LEGENDA]'eq'PANTANAL') | |
| 76 | + STYLE | |
| 77 | + COLOR 242 192 145 | |
| 78 | + OFFSET 0 0 | |
| 79 | + END # STYLE | |
| 80 | + TITLE "" | |
| 81 | + END # CLASS | |
| 82 | + CLASS | |
| 83 | + NAME "AMAZONIA" | |
| 84 | + EXPRESSION ('[CD_LEGENDA]'eq'AMAZONIA') | |
| 85 | + STYLE | |
| 86 | + COLOR 149 120 37 | |
| 87 | + OFFSET 0 0 | |
| 88 | + END # STYLE | |
| 89 | + TITLE "" | |
| 90 | + END # CLASS | |
| 91 | + CLASS | |
| 92 | + NAME "MATA ATLANTICA" | |
| 93 | + EXPRESSION ('[CD_LEGENDA]'eq'MATA ATLANTICA') | |
| 94 | + STYLE | |
| 95 | + COLOR 208 160 125 | |
| 96 | + OFFSET 0 0 | |
| 97 | + END # STYLE | |
| 98 | + TITLE "" | |
| 99 | + END # CLASS | |
| 100 | + END # LAYER | |
| 101 | + | |
| 102 | +END # MAP | |
| 103 | + | ... | ... |