Ir para o conteúdo

GPWeb

 Voltar a Bugs encontr...
Tela cheia

FALHA DE SEGURANÇA NO LOGIN

11 de Março de 2013, 18:21 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 99 vezes

Caros,

Reporto para troca de experiência na comunidade falha de segurança no login do gpweb, conforme segue:

 Estamos usando para login de usuários comuns o AD de rede, e para gestores de Unidades (Diretores, gerentes e supervisores) login institucional criado no gpweb (ex. "diges, presi, etc"). Ocorre que no caso dos usuários normais (AD) o acesso se dá via login e senha de rede sem nenhum problema, porém nos usuários criados no gpweb, o acesso se dá com qualquer senha.

Exemplo: usuário criado: diges

               senha criada: 123456

Acesso se dá: "diges" com senha: 123456; 154143, as4fga41, etc. Ou seja, qualquer senha ele aceita.

Aguardo comentários.


Autor: Helio Carvalho


99 comentários

  • 2410e532148edd2b6c7cbf313c164d3d?only path=false&size=50&d=404Sistema GP-Web Ltda.(usuário não autenticado)
    12 de Março de 2013, 7:56

     

    Não fomos capazes de replicar o problema que relatou.

    Tanto com o LDAP ativo ou inativo, ao colocar senha incorreta o sistema não deixa entrar.

    Abaixo a parte de código que processa o login. não há nada nele, a princípio, que levaria ao comportamento que informou.

            $conectou=$auth->autenticar($usuarioNome, $senha);
            if (!$conectou && $metodo_autenticacao=='sql') {
                //tentar LDAP
                $auth = &getauth('ldap');
                $conectou=$auth->autenticar($usuarioNome, $senha);
                }
            if (!$conectou && $metodo_autenticacao=='ldap') {
                //tentar SQL
                $auth = &getauth('sql');
                $conectou=$auth->autenticar($usuarioNome, $senha);
                }   
            if (!$conectou) return false;

    • 5b8f89b46acbae50c9e1e7837835617f?only path=false&size=50&d=404Helio Carvalho(usuário não autenticado)
      12 de Março de 2013, 12:04

       

      Infelizmente não sabemos o que ocorre. Fizemos a atualização neste momento para a versão 8.3.3 e o problema persiste. 

      Qual é o nome do arquivo que vc se refere  acima? Não consegui localizá-lo.

       

      Aguardo!

      • 61f1e79d62139055c037de792130eb9a?only path=false&size=50&d=404Wagner Rodrigues(usuário não autenticado)
        12 de Março de 2013, 13:18

         

        Helio, tive problemas similares quando estava testando o uso do LDAP, no meu caso o problema estava ligado ao Cache do meu browser (Chrome).

      • 2410e532148edd2b6c7cbf313c164d3d?only path=false&size=50&d=404Sistema GP-Web Ltda.(usuário não autenticado)
        12 de Março de 2013, 20:38

         

        Arquivos que verificamos:

         autenticacao.class.php

         ui.class.php

        Ambos na pasta gpweb/classes

        • 5b8f89b46acbae50c9e1e7837835617f?only path=false&size=50&d=404Helio Carvalho(usuário não autenticado)
          13 de Março de 2013, 9:27

           

          Já tentamos mudança de navegador e nada muda, qualquer caractere ele autentica. Conferi os arquivos em uso que vc mencionou com os novos da ultima versão e aparentemente estão identicos.

           /*************************ARQUIVOS AUTENTICAR.CLASS*****************

          <?php
          /*
          Copyright (c) 2007-2011 The web2Project Development Team <w2p-developers@web2project.net>
          Copyright (c) 2003-2007 The dotProject Development Team <core-developers@dotproject.net>
          Copyright [2008] -  Sérgio Fernandes Reinert de Lima
          Este arquivo é parte do programa gpweb
          O gpweb é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença.
          Este programa é distribuído na esperança que possa ser  útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer  MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/GPL em português para maiores detalhes.
          Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "licença GPL 2.odt", junto com este programa, se não, acesse o Portal do Software Público Brasileiro no endereço www.​soft​ware​publ​ico.​gov.​br ou escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
          */

          /********************************************************************************************
                 
          gpweb\classes\autenticacao.class.php       

          Define as classes de autenticação no login                                                                                                                                   
                                                                                                                                                                                         
          ********************************************************************************************/
          if (!defined('BASE_DIR')) die('Você não deveria acessar este arquivo diretamente.');

          function &getAuth($modo_autenticacao) {
              switch ($modo_autenticacao) {
                  case 'ldap':
                      $auth = new LDAPAutenticador();
                      return $auth;
                      break;
                  case 'pn':
                      $auth = new PostNukeAutenticador();
                      return $auth;
                      break;
                  default:
                      $auth = new SQLAutenticador();
                      return $auth;
                      break;
                  }
              }

          class PostNukeAutenticador extends SQLAutenticador {

              function PostNukeAutenticador() {
                  global $config;
                  $this->fallback = isset($config['postnuke_permite_login']) ? $config['postnuke_permite_login'] : false;
                  }

              function autenticar($usuarioNome, $senha) {
                  global $bd, $Aplic,$config;
                  if (!isset($_REQUEST['usuarioData'])) {
                      if ($this->fallback) return parent::autenticar($usuarioNome, $senha);
                      else die('Você não configurou o site PostNuke corretamente.');
                      }
                  if (!$dado_comprimido = base64_decode(urldecode($_REQUEST['usuarioData']))) die('As credenciais fornecidas não eram válida (1)');
                  if (!$usuarioData = gzuncompress($dado_comprimido)) die('As credenciais fornecidas não eram válida (2)');
                  if (!$_REQUEST['check'] = md5($usuarioData)) die('As credenciais fornecidas não eram válida (3)');
                  $usuario_data = unserialize($usuarioData);
                  $usuarioNome = trim($usuario_data['login']);
                  $this->usuarioNome = $usuarioNome;
                  $nomes = explode(' ', trim($usuario_data['nome']));
                  $ultimo_nome = array_pop($nomes);
                  $primeiro_nome = implode(' ', $nomes);
                  $senha = trim($usuario_data['senha']);
                  $email = trim($usuario_data['mail']);
                  $q = new BDConsulta;
                  $q->adTabela('usuarios');
                  $q->adCampo('usuario_id, usuario_senha, usuario_contato');
                  $q->adOnde('usuario_login = \''.$usuarioNome.'\'');
                  if (!$rs = $q->exec()) die('Falhou em conseguir detalhes d'.$config['genero_usuario'].' '.$config['usuario'].' - erro foi '.$bd->ErrorMsg());
                  if ($rs->RecordCount() < 1) {
                      $q->limpar();
                      $this->criarUsuarioSql($usuarioNome, $senha, $email, $primeiro_nome, $ultimo_nome);
                      }
                  else {
                      if (!$linha = $rs->FetchRow()) die('Falhou em recuperar detalhe d'.$config['genero_usuario'].' '.$config['usuario'].'.');
                      $this->usuario_id = $linha['usuario_id'];
                      $q->limpar();
                      $q->adTabela('usuarios');
                      $q->adAtualizar('usuario_senha', $senha);
                      $q->adOnde('usuario_id = '.$this->usuario_id);
                      if (!$q->exec()) die('Não foi possível alterar as credenciais.');
                      $q->limpar();
                      $q->adTabela('contatos');
                      $q->adAtualizar('contato_posto', $primeiro_nome);
                      $q->adAtualizar('contato_nomeguerra', $ultimo_nome);
                      $q->adAtualizar('contato_email', $email);
                      $q->adOnde('contato_id = '.$linha['usuario_contato']);
                      if (!$q->exec()) die('Não foi possível alterar detalhes d'.$config['genero_usuario'].' '.$config['usuario'].'.');
                      $q->limpar();
                      }
                  return true;
                  }

              function criarUsuarioSql($usuarioNome, $senha, $email, $primeiro, $ultimo) {
                  global $bd, $Aplic,$config;
                  require_once ($Aplic->getClasseModulo('contatos'));
                  $c = new CContato();
                  $c->contato_posto = $primeiro;
                  $c->contato_nomeguerra = $ultimo;
                  $c->contato_email = $email;
                  $c->contato_ordem = $primeiro.' '.$ultimo;
                  $q = new BDConsulta;
                  $q->inserirObjeto('contatos', $c, 'contato_id');
                  $q->limpar();
                  $contato_id = ($c->contato_id == null) ? 'NULL' : $c->contato_id;
                  if (!$c->contato_id) die('Não foi possível criar detalhes d'.$config['genero_usuario'].' '.$config['usuario'].'.');
                  $q = new BDConsulta;
                  $q->adTabela('usuarios');
                  $q->adInserir('usuario_login', $usuarioNome);
                  $q->adInserir('usuario_senha', $senha);
                  $q->adInserir('usuario_contato', $c->contato_id);
                  if (!$q->exec()) die('Não foi possível criar credenciais d'.$config['genero_usuario'].' '.$config['usuario'].'.');
                  $usuario_id = $bd->Insert_ID('usuarios','usuario_id');
                  $this->usuario_id = $usuario_id;
                  $q->limpar();

                  $q->adTabela('preferencia');
                  $q->adCampo('preferencia.*');
                  $q->adOnde('usuario IS NULL OR usuario=0');
                  $linha = $q->linha();
                  $q->limpar();

                  $q->adTabela('preferencia');
                  $q->adInserir('usuario', $usuario_id);
                  foreach($linha as $chave => $valor){
                      if ($chave!='preferencia_id' && $chave!='usuario' && $valor) $q->adInserir($chave, $valor);
                      }
                  if (!$q->exec()) die('Não foi possível criar as preferências d'.$config['genero_usuario'].' '.$config['usuario'].'.');
                  $q->limpar();

                  if ($config['ldap_perfil']){
                       $q->adTabela('perfil_usuario');
                      $q->adInserir('perfil_usuario_usuario', $this->usuario_id);
                      $q->adInserir('perfil_usuario_perfil', $config['ldap_perfil']);
                      $q->exec();
                      $q->limpar();
                       }
                  return true;
                  }
              }

          class SQLAutenticador {
              var $usuario_id;
              var $usuarioNome;

              function autenticar($usuarioNome, $senha) {
                  global $bd, $Aplic;
                  $this->usuarioNome = $usuarioNome;
                  $q = new BDConsulta;
                  $q->adTabela('usuarios');
                  $q->adCampo('usuario_id, usuario_senha, usuario_ativo');
                  $q->adOnde('usuario_login = \''.$usuarioNome.'\'');
                  $linha = $q->linha();
                  $q->limpar();
                  if (!$linha) return false;
                  if (!isset($linha['usuario_senha']) || !isset($linha['usuario_ativo'])) return false;
                  $this->usuario_id = $linha['usuario_id'];
                  if (MD5($senha) == $linha['usuario_senha'] && $linha['usuario_ativo']) return true;
                  return false;
                  }

              function usuarioId($usuarioNome='') {
                  return $this->usuario_id;
                  }
             
              }

          class LDAPAutenticador extends SQLAutenticador {
              var $ldap_local;
              var $ldap_porta;
              var $ldap_versao;
              var $base_dn;
              var $ldap_procura_usuario;
              var $ldap_procura_senha;
              var $filtro;
              var $usuario_id;
              var $usuarioNome;

              function LDAPAutenticador() {
                  global $config;
                  $this->fallback = isset($config['ldap_permite_login']) ? $config['ldap_permite_login'] : false;
                  $this->ldap_local = $config['ldap_local'];
                  $this->ldap_porta = $config['ldap_porta'];
                  $this->ldap_versao = $config['ldap_versao'];
                  $this->base_dn = $config['ldap_base_dn'];
                  $this->ldap_procura_usuario = $config['ldap_procura_usuario'];
                  $this->ldap_procura_senha = $config['ldap_procura_senha'];
                  $this->filtro = $config['ldap_usuario_filtro'];
                  }

              function autenticar($usuarioNome, $senha) {
                  global $bd, $config;
                  $this->usuarioNome = $usuarioNome;
                 
                  // verificando se foi inserido senha
                  if (strlen($senha) == 0) return false;
                 
                  // se eh permitido login local entao tenta auntenticar na base
                  if ($this->fallback == true) {
                      if (parent::autenticar($usuarioNome, $senha))    return true;
                      }
                 
                  // verificando conexao com o servidor LDAP e configurando a conexao
                  if (!function_exists('ldap_connect')) return false;
                  if (!$rs = @ldap_connect($this->ldap_local, $this->ldap_porta)) return false;
                  @ldap_set_option($rs, LDAP_OPT_PROTOCOL_VERSION, $this->ldap_versao);
                  @ldap_set_option($rs, LDAP_OPT_REFERRALS, 0);
                 
                  $ldap_unir_dn = empty($this->ldap_procura_usuario) ? null : $this->ldap_procura_usuario;
                  $ldap_unir_pw = empty($this->ldap_procura_senha) ? null : $this->ldap_procura_senha;
                 
                 
                  //colaboração de Marcos Vinicius Linhares
                  // caso a busca por usuarios na base LDAP nao possa ser anonima, precisa fazer o bind para um usuario
                  // com autorizacao para busca. Neste caso verifica se o usuario entrou com dados do usuario autorizado
                  // e tenta o bind, caso contrario tenta fazer busca uma anonima na base LDAP.
                  if (isset($ldap_unir_dn) && isset($ldap_unir_pw) && !$unirok = @ldap_bind($rs, $ldap_unir_dn, $ldap_unir_pw)) return false;

              // criando o filtro de busca de acordo com o parametro especificado na configuracao do sistema
              $filtro_r = html_entity_decode(str_replace('%USERNAME%', $usuarioNome, $this->filtro), ENT_COMPAT, 'UTF-8');

              // procura por registro do usuario no LDAP
              if ( !($resultado = @ldap_search($rs, $this->base_dn, $filtro_r)) ) return false;

              // carregando os atributos do usuario
              if ( !($registro_usuario = ldap_get_entries($rs, $resultado)) ) return false;

              // realiza o bind do usuario no LDAP - autenticacao do usuario - se autenticado, entao
              // verifica se o registro do usuario jah existe na base local, caso nao exista entao cria usuario com atributos do LDAP
              if (!@ldap_bind($rs, $registro_usuario[0]['dn'], $senha)) return false;
              else if (!$this->usuarioExiste($usuarioNome) && isset($registro_usuario[0])) $this->criarUsuarioSql($usuarioNome, $registro_usuario[0]);
                  elseif(isset($registro_usuario[0])) $this->atualizaUsuarioSql($usuarioNome, $registro_usuario[0]);
              return true;
              }
             
             
              function usuarioExiste($usuarioNome) {
                  global $bd;
                  $q = new BDConsulta;
                  $resultadoado = false;
                  $q->adTabela('usuarios');
                  $q->adOnde('usuario_login = \''.$usuarioNome.'\'');
                  $rs = $q->exec();
                  if ($rs->RecordCount() > 0) $resultadoado = true;
                  $q->limpar();
                  return $resultadoado;
                  }

              function usuarioId($usuarioNome='') {
                  global $bd;
                  $q = new BDConsulta;
                  $q->adTabela('usuarios');
                  $q->adOnde('usuario_login = \''.$usuarioNome.'\'');
                  $rs = $q->exec();
                  $linha = $rs->FetchRow();
                  $q->limpar();
                  return $linha['usuario_id'];
                  }

              function atualizaUsuarioSql($usuarioNome, $ldap_atributo = array()) {
                   global $config, $Aplic;
                   require_once ($Aplic->getClasseModulo('contatos'));

                  $q = new BDConsulta;
                   $q->adTabela('usuarios');
                   $q->adCampo('usuario_contato');
                   $q->adOnde('usuario_login=\''.$usuarioNome.'\'');
                  $contato_id = $q->resultado();
                   $q->limpar();

                  $contato_nomecompleto = (isset($ldap_atributo[$config['ldap_nomecompleto']][0]) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo[$config['ldap_nomecompleto']][0]) : $ldap_atributo[$config['ldap_nomecompleto']][0]) : null);
                  $contato_nomeguerra = (isset($ldap_atributo[$config['ldap_nomeguerra']][0]) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo[$config['ldap_nomeguerra']][0]) : $ldap_atributo[$config['ldap_nomeguerra']][0]) : null);
                  $contato_email = (isset($ldap_atributo[$config['ldap_email']][0]) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo[$config['ldap_email']][0]) : $ldap_atributo[$config['ldap_email']][0]) : null);
                  $contato_tel = (isset($ldap_atributo[$config['ldap_telefone']][0]) ? $ldap_atributo[$config['ldap_telefone']][0] : null);
                  $contato_cel = (isset($ldap_atributo[$config['ldap_celular']][0]) ? $ldap_atributo[$config['ldap_celular']][0] : null);
                  $contato_funcao = (isset($ldap_atributo[$config['ldap_funcao']][0]) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo[$config['ldap_funcao']][0]) : $ldap_atributo[$config['ldap_funcao']][0]) : null);
                  $contato_cpf = (isset($ldap_atributo['cpf']) ? $ldap_atributo['cpf'][0] : NULL);
                  $contato_matricula = (isset($ldap_atributo['employeenumber']) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo['employeenumber'][0]) : $ldap_atributo['employeenumber'][0]) : NULL);
             
                  if ($contato_nomecompleto || $contato_nomeguerra ||    $contato_email ||    $contato_tel ||    $contato_cel ||    $contato_funcao || $contato_cpf || $contato_matricula){
                      $q->adTabela('contatos');
                       if ($contato_nomecompleto) $q->adAtualizar('contato_nomecompleto', $contato_nomecompleto);
                      if ($contato_nomeguerra) $q->adAtualizar('contato_nomeguerra', $contato_nomeguerra);
                      if ($contato_email) $q->adAtualizar('contato_email', $contato_email);
                      if ($contato_tel) $q->adAtualizar('contato_tel', $contato_tel);
                      if ($contato_cel) $q->adAtualizar('contato_cel', $contato_cel);
                      if ($contato_funcao) $q->adAtualizar('contato_funcao', $contato_funcao);
                      if ($contato_cpf) $q->adAtualizar('contato_cpf', $contato_cpf);
                      if ($contato_matricula) $q->adAtualizar('contato_matricula', $contato_matricula);
                      $q->adOnde('contato_id='.(int)$contato_id);
                       $q->exec();
                       $q->limpar();
                      }
                  }   

              //colaboração de Marcos Vinicius Linhares
              function criarUsuarioSql($usuarioNome, $ldap_atributo = array()) {
                   global $bd, $config, $Aplic;
                   require_once ($Aplic->getClasseModulo('contatos'));

                  // criando array com informacoes de contato do usuario   
                  $c = new CContato();
                  // carregando o array contato com as informacoes dos atributos do LDAP, se existente,
                  // de acordo com o relacionamento DE/PARA feito na interface de administracao
                  $c->contato_cia = ($config['om_padrao'] ? $config['om_padrao'] : null);
                  $c->contato_nomecompleto = (isset($ldap_atributo[$config['ldap_nomecompleto']][0]) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo[$config['ldap_nomecompleto']][0]) : $ldap_atributo[$config['ldap_nomecompleto']][0]) : null);
                  $c->contato_nomeguerra = (isset($ldap_atributo[$config['ldap_nomeguerra']][0]) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo[$config['ldap_nomeguerra']][0]) : $ldap_atributo[$config['ldap_nomeguerra']][0]) : null);
                  $c->contato_email = (isset($ldap_atributo[$config['ldap_email']][0]) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo[$config['ldap_email']][0]) : $ldap_atributo[$config['ldap_email']][0]) : null);
                  $c->contato_tel = (isset($ldap_atributo[$config['ldap_telefone']][0]) ? $ldap_atributo[$config['ldap_telefone']][0] : null);
                  $c->contato_cel = (isset($ldap_atributo[$config['ldap_celular']][0]) ? $ldap_atributo[$config['ldap_celular']][0] : null);
                  $c->contato_funcao = (isset($ldap_atributo[$config['ldap_funcao']][0]) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo[$config['ldap_funcao']][0]) : $ldap_atributo[$config['ldap_funcao']][0]) : null);
                  $c->contato_cpf = (isset($ldap_atributo['cpf']) ? $ldap_atributo['cpf'][0] : NULL);
                  $c->contato_matricula = (isset($ldap_atributo['employeenumber']) ? ($config['ldap_charset']=='utf8' ? utf8_decode($ldap_atributo['employeenumber'][0]) : $ldap_atributo['employeenumber'][0]) : NULL);
                  
                  // inserindo array com informacoes de contato na tabela contatos
                  $q = new BDConsulta;
                  $q->inserirObjeto('contatos', $c, 'contato_id');
                  $q->limpar();   
                   $contato_id = ($c->contato_id == null ? 'NULL' : $c->contato_id);

                  // inserindo novo usuario na tabela usuarios
                   $q = new BDConsulta;
                   $q->adTabela('usuarios');
                   $q->adInserir('usuario_login', $usuarioNome);
                  $q->adInserir('usuario_senha', NULL);
                   $q->adInserir('usuario_contato', $c->contato_id);
                   $q->exec();
                   $usuario_id = $bd->Insert_ID('usuarios','usuario_id');
                   $this->usuario_id = $usuario_id;
                   $q->limpar();

                  // inserindo permissoes de acesso de acordo com o perfil selecionado
                   if ($config['ldap_perfil']){
                       $q->adTabela('perfil_usuario');
                      $q->adInserir('perfil_usuario_usuario', $this->usuario_id);
                      $q->adInserir('perfil_usuario_perfil', $config['ldap_perfil']);
                      $q->exec();
                      $q->limpar();
                       }
                   }   
                 
              }
          ?>

           ****************************ARQUIVO UI.CLASS********************/

          <?php
          /*
          Copyright (c) 2007-2011 The web2Project Development Team <w2p-developers@web2project.net>
          Copyright (c) 2003-2007 The dotProject Development Team <core-developers@dotproject.net>
          Copyright [2008] -  Sérgio Fernandes Reinert de Lima
          Este arquivo é parte do programa gpweb
          O gpweb é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença.
          Este programa é distribuído na esperança que possa ser  útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer  MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/GPL em português para maiores detalhes.
          Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "licença GPL 2.odt", junto com este programa, se não, acesse o Portal do Software Público Brasileiro no endereço www.​soft​ware​publ​ico.​gov.​br ou escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
          */

          /********************************************************************************************
                 
          gpweb\classes\ui.class.php       

          Define a classe CAplic que retém as informações do usuário logado através das páginas                                                                                                                                                           
                                                                                                                                                                                         
          ********************************************************************************************/
          if (!defined('BASE_DIR')) die('Você não deveria acessar este arquivo diretamente.');

          if(!defined('UI_MSG_OK')) define('UI_MSG_OK', 1);
          if(!defined('UI_MSG_ALERTA')) define('UI_MSG_ALERTA', 2);
          if(!defined('UI_MSG_AVISO')) define('UI_MSG_AVISO', 3);
          if(!defined('UI_MSG_ERRO')) define('UI_MSG_ERRO', 4);
          $GLOBALS['traduzir'] = array();
          if(!defined('UI_CAIXA_MASCARA')) define('UI_CAIXA_MASCARA', 0x0F);
          if(!defined('UI_CAIXA_ALTA')) define('UI_CAIXA_ALTA', 1);
          if(!defined('UI_CAIXA_BAIXA')) define('UI_CAIXA_BAIXA', 2);
          if(!defined('UI_CAIXA_PRIMEIRA_ALTA')) define('UI_CAIXA_PRIMEIRA_ALTA', 3);
          if(!defined('UI_MASCARA_SAIDA')) define('UI_MASCARA_SAIDA', 0xF0);
          if(!defined('UI_SAIDA_HTML')) define('UI_SAIDA_HTML', 0);
          if(!defined('UI_SAIDA_JS')) define('UI_SAIDA_JS', 0x10);
          if(!defined('UI_SAIDA_CRUA')) define('UI_SAIDA_CRUA', 0x20);
          require_once BASE_DIR.'/classes/permissoes.class.php';

          class CAplic {
              var $estado = null;
              var $usuario_id = null;
            var $usuario_posto = null;
              var $usuario_nomeguerra = null;
              var $usuario_funcao = null;
              var $usuario_nome = null;
              var $usuario_nome_completo = null;
              var $usuario_cia = null;
              var $usuario_dept = null;
              var $usuario_grupo_dept = null;
              var $usuario_lista_dept = null;
              var $usuario_tem_lista_dept = null;
              var $usuario_email = null;
              var $usuario_email2 = null;
              var $usuario_admin = null;
              var $profissional = null;
              var $usuario_super_admin = null;
              var $usuario_acesso_email = null;
              var $usuario_pode_oculta = null;
              var $usuario_cm = null;
              var $conta_conjunta = null;
              var $chave_privada = null;
              var $chave_criada = null;
              var $chave_publica_id = null;
              var $senha_msg = null;
              var $usuario_ativo = null;
              var $usuario_pode_assinar = null;
              var $usuario_pode_protocolar = null;
              var $usuario_pode_outra_cia = null;
              var $usuario_pode_lateral = null;
              var $usuario_pode_superior = null;
              var $usuario_pode_todas_cias = null;
              var $usuario_envia_cia = null;
              var $usuario_recebe_cia = null;
              var $usuario_inserir_demanda = null;
              var $usuario_analisa_demanda = null;
              var $usuario_analisa_viabilidade = null;
              var $usuario_cria_termo_abertura = null;
              var $usuario_aprovar_termo_abertura = null;
              var $usuario_cria_social = null;
              var $usuario_cria_acao = null;
              var $usuario_cria_familia = null;
              var $usuario_cria_comunidade = null;
              var $usuario_cria_comite = null;
              var $usuario_exporta_familia = null;
              var $usuario_importa_familia = null;
              var $usuario_gera_notebook = null;
              var $usuario_importa_notebook = null;
              var $usuario_pode_criar = null;
              var $usuario_pode_aprovar = null;
              var $usuario_pode_editar = null;
              var $usuario_pauta = null;
              var $usuario_prefs = null;
              var $dia_selecionado = null;
              var $usuario_localidade = null;
              var $usuario_linguagem = null;
              var $base_localidade = 'pt';
              var $msg = '';
              var $msgNo = '';
              var $redirecionarPadrao = '';
              var $cfg = null;
              var $versao_maior = null;
              var $versao_menor = null;
              var $versao_revisao = null;
              var $versao_string = null;
              var $beta = null;
              var $ultimo_id_inserido = null;
              var $usuario_estilo = null;
              var $cor_msg_nao_lida = null;
              var $cor_msg_realce = null;
              var $celular = null;
             
             
              function CAplic() {
                  $this->estado = array();
                  $this->usuario_id = -1;
                  $this->usuario_posto = '';
                  $this->usuario_nomeguerra = '';
                  $this->usuario_funcao = '';
                  $this->usuario_nome = '';
                  $this->usuario_nome_completo = '';
                  $this->usuario_cia = null;
                  $this->usuario_dept = null;
                  $this->usuario_grupo_dept = null;
                  $this->usuario_admin = 0;
                  $this->profissional = 0;
                  $this->usuario_super_admin = 0;
                  $this->usuario_acesso_email = 0;
                  $this->usuario_pode_oculta = 0;
                  $this->usuario_cm = 0;
                  $this->chave_privada= '';
                  $this->chave_criada= '';
                  $this->chave_publica_id= null;
                  $this->senha_msg= '';
                  $this->conta_conjunta = 0;
                  $this->usuario_ativo = 0;
                  $this->usuario_pode_assinar = 0;
                  $this->usuario_pode_protocolar = 0;
                  $this->usuario_pode_criar = 0;
                  $this->usuario_pode_aprovar = 0;
                  $this->usuario_pode_editar = 0;
                  $this->usuario_pauta = 0;
                  $this->usuario_pode_outra_cia = 0;
                  $this->usuario_pode_lateral = 0;
                  $this->usuario_pode_superior = 0;
                  $this->usuario_pode_todas_cias = 0;
                  $this->usuario_envia_cia = 0;
                  $this->usuario_recebe_cia = 0;
                  $this->usuario_inserir_demanda = 0;
                  $this->usuario_analisa_demanda = 0;
                  $this->usuario_analisa_viabilidade = 0;
                  $this->usuario_cria_termo_abertura = 0;
                  $this->usuario_aprovar_termo_abertura = 0;
                  $this->usuario_cria_social = 0;
                  $this->projeto_id = null;
                  $this->redirecionarPadrao = '';
                  $this->setUsuarioLocalidade($this->base_localidade);
                  $this->usuario_prefs = array();
                  }
             
              function &acl() {
                  if (!isset($GLOBALS['acl'])) $GLOBALS['acl'] = new meu_acl;
                  return $GLOBALS['acl'];
                  }
                 
              function getClasseSistema($nome = null) {
                  if ($nome) return BASE_DIR.'/classes/'.$nome.'.class.php';
                  }

              function getClasseBiblioteca($nome = null) {
                  if ($nome) return BASE_DIR.'/lib/'.$nome.'.php';
                  }

              function getClasseModulo($nome = null) {
                  if ($nome) return BASE_DIR.'/modulos/'.$nome.'/'.$nome.'.class.php';
                  }

              function getModuloAjax( $nome=null ) {
                  if ($nome) return BASE_DIR.'/modulos/'.$nome.'/'.$nome.'.ajax.php';
                  }

              function getVersao() {
                  global $config;
                  if (!isset($this->versao_maior)) {
                      include_once BASE_DIR.'/incluir/versao.php';
                      $this->versao_maior = $_versao_maior;
                      $this->versao_menor = $_versao_menor;
                      $this->_versao_revisao = $_versao_revisao;
                      $this->beta = $beta;
                      $this->versao_string = $this->versao_maior.'.'.$this->versao_menor.'.'.$this->_versao_revisao.($this->beta ? ' Beta '.$this->beta :'').'<br>'.$data_versao;
                      }
                  return $this->versao_string;
                  }

              function checarEstilo() {
                  $estilo_ui = 'rondon';
                  $this->setPref('ui_estilo', 'rondon');
                  }

              function lerDirs($caminho) {
                  $dirs = array();
                  if (is_dir(BASE_DIR.'/'.$caminho)){
                      $d = dir(BASE_DIR.'/'.$caminho);
                      if ($d){
                          while (false !== ($nome = $d->read())) {
                              if (is_dir(BASE_DIR.'/'.$caminho.'/'.$nome) && $nome != '.' && $nome != '..' && $nome != 'CVS' && $nome != '.svn') $dirs[$nome] = $nome;
                              }
                          $d->close();
                          }
                      }   
                  return $dirs;
                  }

              function lerArquivos($caminho, $filtro = '.') {
                  $arquivos = array();
                  if (is_dir($caminho) && ($handle = opendir($caminho))) {
                      while (false !== ($arquivo = readdir($handle))) {
                          if ($arquivo != '.' && $arquivo != '..' && preg_match('/'.$filtro.'/', $arquivo)) $arquivos[$arquivo] = $arquivo;
                          }
                      closedir($handle);
                      }
                  return $arquivos;
                  }

              function checarNomeArquivo($arquivo) {
                  global $Aplic;
                  $carc_ruins = ";/\\";
                  $substituicao_ruim = '....';
                  if (strpos(strtr($arquivo, $carc_ruins, $substituicao_ruim), '.') !== false) $Aplic->redirecionar('m=publico&a=acesso_negado');
                  else return $arquivo;
                  }

              function fazerNomeArquivoSeguro($arquivo) {
                  $arquivo = str_replace('../', '', $arquivo);
                  $arquivo = str_replace('..\\', '', $arquivo);
                  return $arquivo;
                  }

              function setUsuarioLocalidade($loc = '', $set = true) {
                  global $localidade_tipo_caract;
                  $IDIOMA = $this->carregarIdioma();
                  if (!$loc) $loc = (isset($this->usuario_prefs['localidade']) && $this->usuario_prefs['localidade'] ? $this->usuario_prefs['localidade'] : config('idioma'));
                  if (isset($IDIOMA[$loc])) $lingua = $IDIOMA[$loc];
                  else {
                      if (strlen($loc)> 2) {
                          list($l, $c) = explode('_', $loc);
                          $loc = $this->acharIdioma($l, $c);
                          }
                      else {
                          $loc = $this->acharIdioma($loc);
                          }
                      $lingua = $IDIOMA[$loc];
                      }
                 
                  list($base_localidade, $texto_inglesa, $texto_nativa, $idioma_padrao, $lcs) = $lingua;
                  if (!isset($lcs))    $lcs = (isset($localidade_tipo_caract)) ? $localidade_tipo_caract : 'utf-8';
                 
                  if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') $usuario_linguagem = $idioma_padrao;
                  else $usuario_linguagem = $loc.'.'.$lcs;
                 
                  if ($set) {
                      $this->usuario_localidade = $base_localidade;
                      $this->usuario_linguagem = $usuario_linguagem;
                      $localidade_tipo_caract = $lcs;
                      }
                  else return $usuario_linguagem;
                  }

              function acharIdioma($idioma, $pais = false) {
                  $IDIOMA = $this->carregarIdioma();
                  $idioma = strtolower($idioma);
                  if ($pais) {
                      $pais = strtoupper($pais);
                      $code = $idioma.'_'.$pais;
                      if (isset($IDIOMA[$code])) return $code;
                      }
                  $primeira_entrada = null;
                  foreach ($IDIOMA as $lingua => $info) {
                      list($l, $c) = explode('_', $lingua);
                      if ($l == $idioma) {
                          if (!$primeira_entrada) $primeira_entrada = $lingua;
                          if ($pais && $c == $pais) return $lingua;
                          }
                      }
                  return $primeira_entrada;
                  }

              function carregarIdioma() {
                  $IDIOMA = array();
                  $langs = $this->lerDirs('localidades');
                  foreach ($langs as $lingua) if (file_exists(BASE_DIR.'/localidades/'.$lingua.'/idioma.php')) include BASE_DIR.'/localidades/'.$lingua.'/idioma.php';
                  $_SESSION['IDIOMAS'] = &$IDIOMA;
                  return $IDIOMA;
                  }

              function _($str, $estados = 0) {
                  if (is_array($str)) {
                      $traduzido = array();
                      foreach ($str as $s) $traduzido[] = $this->__($s, $estados);
                      return implode(' ', $traduzido);
                      }
                  else return $this->__($str, $estados);
                  }

              function __($str, $estados = 0) {
                  $str = trim($str);
                  if (empty($str)) return '';
                  $x = $GLOBALS['traduzir'][$str];
                  $x = $str;
                  if ($x)    $str = $x;
                 
                  switch ($estados & UI_CAIXA_MASCARA) {
                      case UI_CAIXA_ALTA:
                          $str = strtoupper($str);
                          break;
                      case UI_CAIXA_BAIXA:
                          $str = strtolower($str);
                          break;
                      case UI_CAIXA_PRIMEIRA_ALTA:
                          $str = ucwords($str);
                          break;
                      }
                  global $localidade_tipo_caract;
                  if (!$localidade_tipo_caract) $localidade_tipo_caract = 'iso-8859-1';
                  switch ($estados & UI_MASCARA_SAIDA) {
                      case UI_SAIDA_HTML:
                          $str = htmlentities(stripslashes($str), ENT_COMPAT, $localidade_tipo_caract);
                          break;
                      case UI_SAIDA_JS:
                          $str = addslashes(stripslashes($str));
                          break;
                      case UI_SAIDA_CRUA:
                          $str = stripslashes($str);
                          break;
                      }
                  return $str;
                  }

              function salvarPosicao(){
                  $qnt=0;
                  $saida='';
                  foreach($_REQUEST as $chave => $valor) {
                      if (is_array($valor)){
                          foreach($valor as $chave1 => $valor1) $saida.=($qnt++ ? '&' : '').$chave.'[]='.$valor1;
                          }
                      else $saida.=($qnt++ ? '&' : '').$chave.'='.$valor;
                      }
                  $this->estado['POSICAOSALVA']=$saida;
                  }

              function resetarPosicao() {
                  $this->estado['POSICAOSALVA'] = '';
                  }

              function getPosicao() {
                  if (isset($this->estado['POSICAOSALVA'])) return $this->estado['POSICAOSALVA'];
                  else return '';
                 
                  }

              function setChavePrivada($chave) {
                  return $this->chave_privada=$chave;
                  }

              function setChaveCriada($chave) {
                  return $this->chave_criada=$chave;
                  }

              function setChavePublicaId($chave) {
                  return $this->chave_publica_id=$chave;
                  }

              function setSenhaMsg($senha) {
                  return $this->senha_msg=$senha;
                  }

              function redirecionar($toms = '', $hist = '', $caminho='') {
                  if (!$toms) $toms = !empty($this->estado['POSICAOSALVA'.$hist]) ? $this->estado['POSICAOSALVA'.$hist] : $this->redirecionarPadrao;
                  echo '<script>url_passar(0, \''.$toms.'\');</script>';
                  exit();
                  }
                 
              function setMsg($msg, $msgNo = 0, $anexar = false) {
                  $this->msg = $anexar ? $this->msg.' '.$msg : $msg;
                  $this->msgNo = $msgNo;
                  }
             
              function getMsg($reset = true) {
                  $img = '';
                  $classe = '';
                  $msg = $this->msg;
                  switch ($this->msgNo) {
                      case UI_MSG_OK:
                          $img = imagem('icones/ok.png');
                          $classe = 'mensagem';
                          break;
                      case UI_MSG_ALERTA:
                          $img = imagem('icones/alerta.png');
                          $classe = 'mensagem';
                          break;
                      case UI_MSG_AVISO:
                          $img = imagem('icones/informacao.gif');
                          $classe = 'aviso';
                          break;
                      case UI_MSG_ERRO:
                          $img = imagem('icones/cancelar.png');
                          $classe = 'erro';
                          break;
                      default:
                          $classe = 'mensagem';
                          break;
                      }
                  if ($reset) {
                      $this->msg = '';
                      $this->msgNo = 0;
                      }
                  return $msg ? '<table cellspacing=0 cellpadding=0><tr><td>'.$img.'</td><td class="'.$classe.'">'.$msg.'</td></tr></table>' : '';
                  }
             
              function setEstado($legenda, $valor = null) {
                  //if (isset($valor)) $this->estado[$legenda] = $valor;
                  $this->estado[$legenda] = $valor;
                  }
             
              function getEstado($legenda, $valor_padrao = null) {
                  if (array_key_exists($legenda, $this->estado))    return $this->estado[$legenda];
                  elseif (isset($valor_padrao)) {
                      $this->setEstado($legenda, $valor_padrao);
                      return $valor_padrao;
                      }
                  else return null;
                  }
             
              function login($usuarioNome, $senha) {
                  global $config;
                  require_once BASE_DIR.'/classes/autenticacao.class.php';
                  $metodo_autenticacao = config('metodo_autenticacao', 'sql');

                  if ($_POST['login'] != 'entrar' && $_POST['login'] != $this->_('entrar', UI_SAIDA_CRUA) && $_REQUEST['login'] != $metodo_autenticacao)     die('Você escolheu logar utilizando um método não suportado ou desabilitado.');
                  $auth = &getauth($metodo_autenticacao);
                 
                  $usuarioNome = trim(db_escape($usuarioNome));
                  $senha = trim($senha);

                  //para o programa gaucho usar o webservice em 1o lugar
                  if ($config['militar']==11 && file_exists(BASE_DIR.'/modulos/sagri/autenticacao.class.php')) {
                      require_once BASE_DIR.'/modulos/sagri/autenticacao.class.php';
                      $auth = new PGQPAutenticador();
                      $conectou=$auth->autenticar($usuarioNome, $senha);
                      }
                     
                 
                  $conectou=$auth->autenticar($usuarioNome, $senha);

                  if (!$conectou && $metodo_autenticacao=='sql') {
                      //tentar LDAP
                      $auth = &getauth('ldap');
                      $conectou=$auth->autenticar($usuarioNome, $senha);
                      }
                     
                  if (!$conectou && $metodo_autenticacao=='ldap') {
                      //tentar SQL
                      $auth = &getauth('sql');
                      $conectou=$auth->autenticar($usuarioNome, $senha);
                      }   

                  if (!$conectou) return false;
                 
                  $usuario_id = $auth->usuarioId($usuarioNome);
                  $usuarioNome = $auth->usuarioNome;
             
                  $q = new BDConsulta;
                  $q->adTabela('usuarios');
                  $q->esqUnir('contatos', 'contatos', 'contato_id = usuario_contato');
                  $q->adCampo('usuario_id, contato_posto AS usuario_posto, contato_nomeguerra AS usuario_nomeguerra, concatenar_tres(contato_posto, \' \', contato_nomeguerra) AS usuario_nome, contato_nomecompleto AS usuario_nome_completo, contato_funcao AS usuario_funcao, contato_cia AS usuario_cia, contato_dept AS usuario_dept, usuario_grupo_dept, contato_email AS usuario_email, contato_email2 AS usuario_email2, usuario_admin, usuario_acesso_email, usuario_pode_oculta, usuario_cm, usuario_ativo, usuario_pode_assinar, usuario_pode_protocolar, usuario_pode_outra_cia, usuario_pode_lateral, usuario_pode_superior, usuario_pode_todas_cias, usuario_envia_cia, usuario_recebe_cia, usuario_inserir_demanda, usuario_analisa_demanda, usuario_analisa_viabilidade, usuario_cria_termo_abertura, usuario_aprovar_termo_abertura, usuario_cria_social, usuario_cria_acao , usuario_cria_familia, usuario_cria_comunidade, usuario_cria_comite, usuario_exporta_familia, usuario_importa_familia, usuario_gera_notebook, usuario_importa_notebook, usuario_pode_criar, usuario_pode_aprovar, usuario_pode_editar, usuario_pauta');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $sql = $q->prepare();
                  $q->carregarObjeto($this);
                  $q->limpar();
                 
                  $q->adTabela('usuario_dept');
                  $q->adCampo('usuario_departamento');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $q->adOnde('usuario_departamento !='.(int)$usuario_id);
                  $lista=$q->listaVetorChave('usuario_departamento', 'usuario_departamento');
                  $q->limpar();
                 
                  if (count($lista)){
                      $permitido=array();
                      $this->usuario_tem_lista_dept=true;
                      $q->adTabela('usuarios');
                      $q->adCampo('usuario_contas');
                      $q->adOnde('usuario_id ='.(int)$usuario_id);
                      $contas=$q->resultado();
                      $q->limpar();
                      $contas=explode(',',$contas);
                      foreach($contas as $linha) if (isset($lista[$linha]) || $linha==$usuario_id) $permitido[]=$linha;
                      $permitido=implode(',',$permitido);
                      $this->usuario_lista_dept=$permitido;
                      }
                  else {
                      $this->usuario_tem_lista_dept=false;
                      $this->usuario_lista_dept='';
                      }   

                  $q->adTabela('usuarios');
                  $q->adCampo('usuario_login2, usuario_senha2');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $outra_conta=$q->Linha();
                  $q->limpar();
                 
                  if ($outra_conta['usuario_login2'] && $outra_conta['usuario_senha2']) $this->conta_conjunta=1;
                 
                  $q->adTabela('preferencia_cor');
                  $q->adCampo('cor_msg_nao_lida, cor_msg_realce');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $cores=$q->Linha();
                  $q->limpar();
                 
                  if (!$cores['cor_msg_nao_lida']){
                      $q->adTabela('preferencia_cor');
                      $q->adCampo('cor_msg_nao_lida, cor_msg_realce');
                      $q->adOnde('usuario_id IS NULL');
                      $cores=$q->Linha();
                      $q->limpar();
                      }
                 
                  $this->cor_msg_nao_lida=($cores['cor_msg_nao_lida']? $cores['cor_msg_nao_lida'] :'fbfbda');
                  $this->cor_msg_realce=($cores['cor_msg_realce']? $cores['cor_msg_realce'] :'ffffff');
                 
                  if ($_REQUEST['celular']) $this->celular=1;
                 
                  $this->carregarPrefs($this->usuario_id);
                  $this->setUsuarioLocalidade();
                  $this->checarEstilo();
                  $this->usuario_super_admin=checarModulo('sistema', 'editar');
                  if ($this->usuario_super_admin) $this->usuario_admin=1;
                  $this->profissional=file_exists(BASE_DIR.'/modulos/projetos/tarefa_cache.class_pro.php');
                  return true;
                  }
             
             
             
             
              function mudar_conta($usuario_id) {
                  global $config;
                  $this->registrarLogout($this->usuario_id);
                  $q = new BDConsulta;
                  $q->adTabela('usuarios');
                  $q->esqUnir('contatos', 'contatos', 'contato_id = usuario_contato');
                  $q->adCampo('usuario_id, contato_posto AS usuario_posto, contato_nomeguerra AS usuario_nomeguerra, concatenar_tres(contato_posto, \' \', contato_nomeguerra) AS usuario_nome, contato_nomecompleto AS usuario_nome_completo, contato_funcao AS usuario_funcao, contato_cia AS usuario_cia, contato_dept AS usuario_dept, usuario_grupo_dept, contato_email AS usuario_email, contato_email2 AS usuario_email2, usuario_admin, usuario_acesso_email, usuario_pode_oculta, usuario_cm, usuario_ativo, usuario_pode_assinar, usuario_pode_protocolar, usuario_pode_outra_cia, usuario_pode_lateral, usuario_pode_superior, usuario_pode_todas_cias, usuario_envia_cia, usuario_recebe_cia, usuario_inserir_demanda, usuario_analisa_demanda, usuario_analisa_viabilidade, usuario_cria_termo_abertura, usuario_aprovar_termo_abertura, usuario_cria_social, usuario_cria_acao , usuario_cria_familia, usuario_cria_comunidade, usuario_cria_comite, usuario_exporta_familia, usuario_importa_familia, usuario_gera_notebook, usuario_importa_notebook, usuario_pode_criar, usuario_pode_aprovar, usuario_pode_editar, usuario_pauta');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $sql = $q->prepare();
                  $q->carregarObjeto($this);
                  $q->limpar();
                 
                  $q->adTabela('usuario_dept');
                  $q->adCampo('usuario_departamento');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $q->adOnde('usuario_departamento !='.(int)$usuario_id);
                  $lista=$q->listaVetorChave('usuario_departamento', 'usuario_departamento');
                  $q->limpar();
                  if (count($lista)){
                      $permitido=array();
                      $this->usuario_tem_lista_dept=true;
                      $q->adTabela('usuarios');
                      $q->adCampo('usuario_contas');
                      $q->adOnde('usuario_id ='.(int)$usuario_id);
                      $contas=$q->resultado();
                      $q->limpar();
                      $contas=explode(',',$contas);
                      foreach($contas as $linha) if (isset($lista[$linha]) || $linha==$usuario_id) $permitido[]=$linha;
                      $permitido=implode(',',$permitido);
                      $this->usuario_lista_dept=$permitido;
                      }
                  else {
                      $this->usuario_tem_lista_dept=false;
                      $this->usuario_lista_dept='';
                      }   
                 
                  $q->adTabela('usuarios');
                  $q->adCampo('usuario_login2, usuario_senha2');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $outra_conta=$q->Linha();
                  $q->limpar();
                 
                  if ($outra_conta['usuario_login2'] && $outra_conta['usuario_senha2']) $this->conta_conjunta=1;
                 
                  $q->adTabela('preferencia_cor');
                  $q->adCampo('cor_msg_nao_lida, cor_msg_realce');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $cores=$q->Linha();
                  $q->limpar();
                 
                  if (!$cores['cor_msg_nao_lida']){
                      $q->adTabela('preferencia_cor');
                      $q->adCampo('cor_msg_nao_lida, cor_msg_realce');
                      $q->adOnde('usuario_id =0');
                      $cores=$q->Linha();
                      $q->limpar();
                      }
                  $this->cor_msg_nao_lida=($cores['cor_msg_nao_lida']? $cores['cor_msg_nao_lida'] :'fbfbda');
                  $this->cor_msg_realce=($cores['cor_msg_realce']? $cores['cor_msg_realce'] :'ffffff');
                  $this->carregarPrefs($this->usuario_id);
                  $this->setUsuarioLocalidade();
                  $this->checarEstilo();
                  $this->usuario_super_admin=checarModulo('sistema', 'editar');
                  if ($this->usuario_super_admin) $this->usuario_admin=1;
                  return true;
                  }
             
             
              function carregar_usuario($usuario_id) {
                  $q = new BDConsulta;
                  $q->adTabela('usuarios');
                  $q->esqUnir('contatos', 'contatos', 'contato_id = usuario_contato');
                  $q->adCampo('usuario_id, contato_posto AS usuario_posto, contato_nomeguerra AS usuario_nomeguerra, concatenar_tres(contato_posto, \' \', contato_nomeguerra) AS usuario_nome, contato_nomecompleto AS usuario_nome_completo, contato_funcao AS usuario_funcao, contato_cia AS usuario_cia, contato_dept AS usuario_dept, usuario_grupo_dept, contato_email AS usuario_email, contato_email2 AS usuario_email2, usuario_admin, usuario_acesso_email, usuario_pode_oculta, usuario_cm, usuario_ativo, usuario_pode_assinar, usuario_pode_protocolar, usuario_pode_outra_cia, usuario_pode_lateral, usuario_pode_superior, usuario_pode_todas_cias, usuario_envia_cia, usuario_recebe_cia, usuario_inserir_demanda, usuario_analisa_demanda, usuario_analisa_viabilidade, usuario_cria_termo_abertura, usuario_aprovar_termo_abertura, usuario_cria_social, usuario_cria_acao , usuario_cria_familia, usuario_cria_comunidade, usuario_cria_comite, usuario_exporta_familia, usuario_importa_familia, usuario_gera_notebook, usuario_importa_notebook, usuario_pode_criar, usuario_pode_aprovar, usuario_pode_editar, usuario_pauta');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $sql = $q->prepare();
                  $q->carregarObjeto($this);
                  $q->limpar();
                 
                  $q->adTabela('usuario_dept');
                  $q->adCampo('usuario_departamento');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $q->adOnde('usuario_departamento !='.(int)$usuario_id);
                  $lista=$q->listaVetorChave('usuario_departamento', 'usuario_departamento');
                  $q->limpar();
                  if (count($lista)){
                      $permitido=array();
                      $this->usuario_tem_lista_dept=true;
                      $q->adTabela('usuarios');
                      $q->adCampo('usuario_contas');
                      $q->adOnde('usuario_id ='.(int)$usuario_id);
                      $contas=$q->resultado();
                      $q->limpar();
                      $contas=explode(',',$contas);
                      foreach($contas as $linha) if (isset($lista[$linha]) || $linha==$usuario_id) $permitido[]=$linha;
                      $permitido=implode(',',$permitido);
                      $this->usuario_lista_dept=$permitido;
                      }
                  else {
                      $this->usuario_tem_lista_dept=false;
                      $this->usuario_lista_dept='';
                      }   
                 
                  $q->adTabela('usuarios');
                  $q->adCampo('usuario_login2, usuario_senha2');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $outra_conta=$q->Linha();
                  $q->limpar();
                 
                  if ($outra_conta['usuario_login2'] && $outra_conta['usuario_senha2']) $this->conta_conjunta=1;
                 
                  $q->adTabela('preferencia_cor');
                  $q->adCampo('cor_msg_nao_lida, cor_msg_realce');
                  $q->adOnde('usuario_id ='.(int)$usuario_id);
                  $cores=$q->Linha();
                  $q->limpar();
                 
                  if (!$cores['cor_msg_nao_lida']){
                      $q->adTabela('preferencia_cor');
                      $q->adCampo('cor_msg_nao_lida, cor_msg_realce');
                      $q->adOnde('usuario_id =0');
                      $cores=$q->Linha();
                      $q->limpar();
                      }
                 
                 
                  $this->cor_msg_nao_lida=($cores['cor_msg_nao_lida']? $cores['cor_msg_nao_lida'] :'fbfbda');
                  $this->cor_msg_realce=($cores['cor_msg_realce']? $cores['cor_msg_realce'] :'ffffff');
                 
                  $this->carregarPrefs($this->usuario_id);
                  $this->checarEstilo();
                 
                  $this->usuario_super_admin=checarModulo('sistema', 'editar');
                  if ($this->usuario_super_admin) $this->usuario_admin=1;
                  return true;
                  }
             
              function registrarLogin() {
                  $q = new BDConsulta;
                  $q->adTabela('usuario_reg_acesso');
                  $q->adInserir('usuario_id', $this->usuario_id);
                  $q->adInserir('entrou', 'now()', false, true);
                  $q->adInserir('usuario_ip', $_SERVER['REMOTE_ADDR']);
                  $q->exec();
                  $this->ultimo_id_inserido = db_insert_id('usuario_reg_acesso','usuario_reg_acesso_id');
                  $q->limpar();
                  }

              function registrarLogout($usuario_id) {
                  $q = new BDConsulta;
                  $q->adTabela('usuario_reg_acesso');
                  $q->adAtualizar('saiu', date('Y-m-d H:i:s'));
                  $q->adOnde('usuario_id = '.(int)$usuario_id.' AND saiu IS NULL');
                  if ($usuario_id > 0) {
                      $q->exec();
                      $q->limpar();
                      }
                  }
             
              function atualizarUltimaAcao($ultimo_id_inserido) {
                  if ($ultimo_id_inserido > 0) {
                      $q = new BDConsulta;
                      $q->adTabela('usuario_reg_acesso');
                      $q->adAtualizar('ultima_atividade', date('Y-m-d H:i:s'));
                      $q->adOnde('usuario_reg_acesso_id = '.$ultimo_id_inserido);
                      $q->exec();
                      $q->limpar();
                      }
                  }
             
              function logout() {
                  }
             
              function fazerLogin() {
                  return ($this->usuario_id < 0) ? true : false;
                  }
             
              function getPref($nome) {
                  return (isset($this->usuario_prefs[$nome]) ? $this->usuario_prefs[$nome] : null);
                  }
             
              function setPref($nome, $val) {
                  $this->usuario_prefs[$nome] = $val;
                  }
             
              function carregarPrefs($uid = 0) {
                  $q = new BDConsulta;
                  $q->adTabela('preferencia');
                  $q->adCampo('preferencia.*');
                  if ($uid) $q->adOnde('usuario = '.(int)$uid);
                  else $q->adOnde('usuario IS NULL OR usuario=0');
                  $prefs = $q->Linha();
                  $q->limpar();   
                  if (!count($prefs)){
                      $q->adTabela('preferencia');
                      $q->adCampo('preferencia.*');
                      $q->adOnde('usuario IS NULL OR usuario=0');
                      $prefs = $q->Linha();
                      $q->limpar();   
                      }
                  $this->usuario_prefs = array_merge($this->usuario_prefs, (array)$prefs);
                  }
             
              function getModulosInstalados() {
                  $q = new BDConsulta;
                  $q->adTabela('modulos');
                  $q->adCampo('mod_diretorio, mod_ui_nome');
                  $q->adOrdem('mod_diretorio');
                  return ($q->ListaChave());
                  }
             
              function getModulosAtivos() {
                  $q = new BDConsulta;
                  $q->adTabela('modulos');
                  $q->adCampo('mod_diretorio, mod_ui_nome');
                  $q->adOnde('mod_ativo = 1');
                  $q->adOrdem('mod_diretorio');
                  return ($q->ListaChave());
                  }
             
              function getMenuModulos() {
                  $q = new BDConsulta;
                  $q->adTabela('modulos');
                  $q->adCampo('mod_diretorio, mod_ui_nome, mod_ui_icone, mod_texto_botao');
                  $q->adOnde('mod_ativo > 0 AND mod_ui_ativo > 0 AND mod_diretorio !=\'publico\'');
                  $q->adOnde('mod_tipo != \'utilitario\'');
                  $q->adOrdem('mod_ui_ordem');
                  return ($q->Lista());
                  }

              function ModuloAtivo($modulo) {
                  $q = new BDConsulta;
                  $q->adTabela('modulos');
                  $q->adCampo('mod_ativo');
                  $q->adOnde('mod_diretorio = \''.$modulo.'\'');
                  $resultado = $q->Resultado();
                  $q->limpar();
                  return $resultado;
                  }
             
              function carregarCabecalhoJS() {
                  global $m, $a, $jquery;
                  include BASE_DIR.'/js/base.php';
                 
                  $raiz = BASE_DIR;
                  if (substr($raiz, -1) != '/') $raiz .= '/';
                  $base = BASE_URL;
                  if (substr($base, -1) != '/') $base .= '/';
                  if ($jquery) echo '<script type="text/javascript" src="'.BASE_URL.'/lib/jquery/jquery-1.8.2.min.js"></script>';
                  echo '<script type="text/javascript" src="'.$base.'lib/mootools/mootools.js"></script>';

                 
                  if (!isset($m))    return;
                  $this->getModuloJS($m, $a, true);
                  }

              function getModuloJS($modulo, $arquivo = null, $carregar_todos = false) {
                  $raiz = BASE_DIR;
                  if (substr($raiz, -1) != '/') $raiz .= '/';
                  $base = BASE_URL;
                  if (substr($base, -1) != '/')    $base .= '/';
                  if ($carregar_todos || !$arquivo) {
                      if (file_exists($raiz.'modulos/'.$modulo.'/'.$modulo.'.modulo.js')) echo '<script type="text/javascript" src="'.$base.'modulos/'.$modulo.'/'.$modulo.'.modulo.js"></script>';
                      }
                  if (isset($arquivo) && file_exists($raiz.'modulos/'.$modulo.'/'.$arquivo.'.js')) echo '<script type="text/javascript" src="'.$base.'modulos/'.$modulo.'/'.$arquivo.'.js"></script>';
                  }

              function carregarRodapeJS() {
                  echo '<script type="text/javascript">window.addEvent(\'domready\', function(){var as = []; $$(\'span\').each(function(span){if (span.getAttribute(\'title\')) as.push(span);});new Tips(as), {    }});</script>';
                  }

              function carregarCalendario() {
                  global $Aplic;
                  echo '<!DOCTYPE html PUBLIC
                    "-//W3C//DTD XHTML 1.0 Transitional//EN"
                    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
                  echo '<script type="text/javascript" src="'.BASE_URL.'/js/calendario.js"></script>';
                  echo '<script type="text/javascript" src="'.BASE_URL.'/lib/calendario/src/js/jscal2.js"></script>';
                  echo '<script type="text/javascript" src="'.BASE_URL.'/lib/calendario/src/js/pt.js"></script>';
                  include BASE_DIR.'/js/calendario.php';
                  }

              function carregarCalendarJS() {
                  global $Aplic;
                  echo '<style type="text/css">@import url('.BASE_URL.'/lib/jscalendar/skins/aqua/theme.css);</style>';
                  echo '<script type="text/javascript" src="'.BASE_URL.'/js/calendar.js"></script>';
                  echo '<script type="text/javascript" src="'.BASE_URL.'/lib/jscalendar/calendar.js"></script>';
                  if (file_exists (BASE_DIR.'/lib/jscalendar/lang/calendar-pt.js')) echo '<script type="text/javascript" src="'.BASE_URL.'/lib/jscalendar/lang/calendar-pt.js"></script>';
                  else echo '<script type="text/javascript" src="'.BASE_URL.'/lib/jscalendar/lang/calendar-en.js"></script>';
                  echo '<script type="text/javascript" src="'.BASE_URL.'/lib/jscalendar/calendar-setup.js"></script>';
                  include BASE_DIR.'/js/calendar.php';
                  }
              }
             
          /********************************************************************************************

          Classe CCaixaTab_nucleo define o esqueleto do sistema de visualização em abas                                                                                                                                                           
                                                                                                                                                                                         
          ********************************************************************************************/
          class CCaixaTab_nucleo {
              var $tabs = null;
              var $ativo = null;
              var $baseHRef = null;
              var $baseInc;
              var $javascript = null;
             
              function CCaixaTab_nucleo($baseHRef = '', $baseInc = '', $ativo = 0, $javascript = null) {
                  $this->tabs = array();
                  $this->ativo= $ativo;
                  $this->baseHRef = ($baseHRef ? $baseHRef.'&' : '?');
                  $this->javascript = $javascript;
                  $this->baseInc = $baseInc;
                  }

              function getNomeTab($idx) {
                  if (isset($this->tabs[$idx][1])) return $this->tabs[$idx][1];
                  else return '';
                  }

              function adicionar($arquivo, $titulo, $traduzido = false, $chave = null, $titulo2=null, $texto=null) {
                  $t = array($arquivo, $titulo, $traduzido, $titulo2, $texto);
                  if (isset($chave)) $this->tabs[$chave] = $t;
                  else $this->tabs[] = $t;
                  }

              function mostrar($extra = '', $js_tabs = false) {
                  global $Aplic, $tabAtualId, $tabNomeAtual;
                  $this->carregarExtras($m, $a);
                  reset($this->tabs);
                  $s = '';
             
                  $s .= '<table cellpadding=0 cellspacing=0 width="100%"><tr>';
                  if (!$somente_tab) $s .= '<td nowrap="nowrap">'.dica("Aba", "Visualizar as opções na forma de abas. </P>Método preferêncial caso não deseja rolar a tela do navegador Web.").'<a class="botao" href="'.$this->baseHRef.'tab=0"><span>abas</span></a>'.dicaF().'<a class="botao" href="'.$this->baseHRef.'tab=-1"><span>lista</span></a></td>';
                  $s .= $extra.'</tr></table>';
                  echo $s;
             
                  $s = '<table width="100%" cellpadding=0 cellspacing=0><tr>';
                  if (count($this->tabs) - 1 < $this->ativo) $this->ativo= 0;
                  foreach ($this->tabs as $k => $v) {
                      $classe = ($k == $this->ativo) ? 'tabativo' : 'tabinativo';
                      $s .= '<td width="1%" nowrap="nowrap" class="tabsp"><img src="./estilo/rondon/imagens/shim.gif" height="1" width="1" alt="" /></td>';
                      $s .= '<td id="tab_s_'.$k.'" width="1%" nowrap="nowrap"';
                      if ($js_tabs) $s .= ' class="'.$classe.'"';
                      $s .= '><a href="';
                      if ($this->javascript)    $s .= 'javascript:'.$this->javascript.'('.$this->ativo. ', '.$k.')';
                      elseif ($js_tabs) $s .= 'javascript:mostrar_tab('.$k.')';
                      else $s .= $this->baseHRef."tab=$k";
                      $s .= '">'.$v[1].'</a></td>';
                      }
                  $s .= '<td nowrap="nowrap" class="tabsp">&nbsp;</td></tr>';
                  $s .= '<tr><td width="100%" colspan="'.(count($this->tabs) * 2 + 1).'" class="tabox">';
                  echo $s;
                  if ($this->baseInc.$this->tabs[$this->ativo][0] != '') {
                      $tabAtualId = $this->ativo;
                      $tabNomeAtual = $this->tabs[$this->ativo][1];
                      if (!$js_tabs) require $this->baseInc .$this->tabs[$this->ativo][0].'.php';
                      }
                  if ($js_tabs) {
                      foreach ($this->tabs as $k => $v) {
                          echo '<div class="tab" id="tab_'.$k.'">';
                          require $this->baseInc.$v[0].'.php';
                          echo '</div>';
                          }
                      }
                  echo '</td></tr></table>';

                  }

              function carregarExtras($modulo, $arquivo = null) {
                  global $Aplic;
                  if (!isset($_SESSION['todas_tabs']) || !isset($_SESSION['todas_tabs'][$modulo])) return false;
                  if ($arquivo) {
                      if (isset($_SESSION['todas_tabs'][$modulo][$arquivo]) && is_array($_SESSION['todas_tabs'][$modulo][$arquivo])) $vetor_tab = &$_SESSION['todas_tabs'][$modulo][$arquivo];
                      else return false;
                      }
                  else $vetor_tab = &$_SESSION['todas_tabs'][$modulo];
                  $tab_contagem = 0;
                  foreach ($vetor_tab as $elem_tab) {
                      if (isset($elem_tab['modulo']) && $Aplic->ModuloAtivo($elem_tab['modulo'])) {
                          $tab_contagem++;
                          $this->adicionar($elem_tab['arquivo'], $elem_tab['nome']);
                          }
                      }
                  return $tab_contagem;
                  }

              function acharTabModulo($tab) {
                  global $Aplic, $m, $a;
                  if (!isset($_SESSION['todas_tabs']) || !isset($_SESSION['todas_tabs'][$m]))    return false;
                  if (isset($a)) {
                      if (isset($_SESSION['todas_tabs'][$m][$a]) && is_array($_SESSION['todas_tabs'][$m][$a])) $vetor_tab = &$_SESSION['todas_tabs'][$m][$a];
                      else $vetor_tab = &$_SESSION['todas_tabs'][$m];
                      }
                  else $vetor_tab = &$_SESSION['todas_tabs'][$m];
                  list($arquivo, $nome) = $this->tabs[$tab];
                  foreach ($vetor_tab as $elem_tab) {
                      if (isset($elem_tab['nome']) && $elem_tab['nome'] == $nome && $elem_tab['arquivo'] == $arquivo) return $elem_tab['modulo'];
                      }
                  return false;
                  }
             
              }
          /********************************************************************************************

          Classe CBlocoTitulo_core define o esqueleto do sistema de botões do título de cada página                                                                                                                                                           
                                                                                                                                                                                         
          ********************************************************************************************/
          class CBlocoTitulo_core {
              var $titulo = '';
              var $icone = '';
              var $modulo = '';
              var $celulas = null;
              var $ajudaref = '';

              function CBlocoTitulo_core($titulo, $icone = '', $modulo = '', $ajudaref = '') {
                  $this->titulo = $titulo;
                  $this->icon = $icone;
                  $this->modulo = $modulo;
                  $this->ajudaref = $ajudaref;
                  $this->celulas1 = array();
                  $this->celulas2 = array();
                  $this->blocos = array();
                  $this->mostrarajuda = checarModulo('ajuda', 'acesso');
                  }

              function adicionaBotaoCelula($href='', $clicando='', $legenda, $icone = '', $titulo = '', $texto='', $prefixo = '', $sufixo = '') {
                  $data='<table cellspacing=0 cellpadding=0><tr><td>'. dica($titulo, $texto). '<a class="botao" href="'.($href ? $href : 'javascript: void(0);').'" '.($clicando ? ' onclick="javascript:'.$clicando.'" ':'').'><span>'.($icone ? imagem($icone):'').str_ireplace(' ','&nbsp;', $legenda).'</span></a>'.dicaF().'</td></tr></table>';
                  $this->celulas1[] = array('', $data, $prefixo, $sufixo);
                  }
             
             
              function adicionaCelula($data = '', $atributos = '', $prefixo = '', $sufixo = '') {
                  $this->celulas1[] = array($atributos, $data, $prefixo, $sufixo);
                  }

              function adicionaBotao($link, $legenda, $icone = '', $titulo = '', $texto = '', $javascript='') {
                  $this->blocos[] = array($legenda, $icone, $titulo, $texto, $javascript, $link);
                  }

              function adicionaBotaoDireita($data = '', $atributos = '', $prefixo = '', $sufixo = '') {
                  $this->celulas2[] = array($atributos, $data, $prefixo, $sufixo);
                  }

              function adicionaBotaoExcluir($nome, $podeExcluir = '', $msg = '', $titulo='', $texto='') {
                  global $Aplic;
                  $this->adicionaBotaoDireita('<table cellspacing=0 cellpadding=0><tr><td nowrap="nowrap">'.dica($titulo, $texto).'<a class="excluir" href="javascript:excluir()" ><span>'.$nome.'</span></a>'.dicaF().'</td></tr></table>');
                  }

             
              function mostrar() {
                  global $Aplic, $a, $m, $tab, $infotab;
                  $estilo_ui = 'rondon';
                  $s = '<table width="100%" cellpadding=0 cellspacing=0><tr>';
                  if ($this->icon && !$Aplic->celular) $s .= '<td width="42">'.imagem($this->icon).'</td>';
                  $s .= '<td align="left" width="100%" nowrap="nowrap"><h1>'.$this->titulo.'</h1></td>';
                  foreach ($this->celulas1 as $c) {
                      $s .= ($c[2] ? $c[2] : '');
                      $s .= '<td align="right" nowrap="nowrap"'.($c[0] ? (' '.$c[0]) : '').'>';
                      $s .= ($c[1] ? $c[1] : '&nbsp;');
                      $s .= '</td>';
                      $s .= ($c[3] ? $c[3] : '');
                      }
                  $s .= '</tr></table>';
                  if (count($this->blocos) || count($this->celulas2)) {
                      $blocos = array();
                      $s .= '<table cellpadding=0 cellspacing=0 width="100%"><tr><td height="20" nowrap="nowrap"><table><tr>';
                      foreach ($this->blocos as $v) {
                          $t = $v[1] ? '<img src="'.acharImagem($v[1], $this->modulo).'" border="" alt="" />&nbsp;' : '';
                          $t .= $v[0];
                          if ($v[5]) $s .= '<td>'.dica($v[2], $v[3]).'<a class="botao" href="javascript:void(0);" onclick="url_passar(0, \''.$v[5].'\');"><span>'.$t.'</span></a>'.dicaF().'</td>';
                          else $s .= '<td>'.dica($v[2], $v[3]).'<a class="botao" href="javascript:void(0);" onclick="'.$v[4].'"><span>'.$t.'</span></a>'.dicaF().'</td>';
                          }
                      $s .= '</tr></table></td>';
                      foreach ($this->celulas2 as $c) {
                          $s .= $c[2] ? $c[2] : '';
                          $s .= '<td align="right" nowrap="nowrap" '.($c[0] ? ' '.$c[0] : '').'>';
                          $s .= $c[1] ? $c[1] : '&nbsp;';
                          $s .= '</td>';
                          $s .= $c[3] ? $c[3] : '';
                          }
                      $s .= '</tr></table>';
                      }
                  echo $s;
                  }

              }
          ?>

          *************************************************************

          AGUARDO COMENTÁRIOS

          • 2410e532148edd2b6c7cbf313c164d3d?only path=false&size=50&d=404Sistema GP-Web Ltda.(usuário não autenticado)
            13 de Março de 2013, 20:08

             

            Não conseguimos vislumbrar qual a serventia de postar neste fórum TODOS os scripts de alguns arquivos do gpweb. A não ser que venham a fazer proposições de mudança no código é algo superfulo haja vista o código ser aberto, podendo ser visualizado até mesmo utilizando bloco de notas. Basta informar o nome dos arquivos php.

            Novamente realizamos testes e também nenhum cliente reportou este problema.

            No caso dos senhores após falhar a autenticação LDAP (usuários criados no gpweb) esta função é chamada:

                function autenticar($usuarioNome, $senha) {
                    global $bd, $Aplic;
                    $this->usuarioNome = $usuarioNome;
                    $q = new BDConsulta;
                    $q->adTabela('usuarios');
                    $q->adCampo('usuario_id, usuario_senha, usuario_ativo');
                    $q->adOnde('usuario_login = \''.$usuarioNome.'\'');
                    $linha = $q->linha();
                    $q->limpar();
                    if (!$linha) return false;
                    if (!isset($linha['usuario_senha']) || !isset($linha['usuario_ativo'])) return false;
                    $this->usuario_id = $linha['usuario_id'];
                    if (MD5($senha) == $linha['usuario_senha'] && $linha['usuario_ativo']) return true;
                    return false;
                    }

            Não conseguimos achar uma possibilidade de retorno verdadeiro (true) com a senha incorreta.

            Recomendo solicitar a um programador em PHP dos senhores nos repassar uma sugestão do motivo deste comportamento.

             

            • 5b8f89b46acbae50c9e1e7837835617f?only path=false&size=50&d=404Helio Carvalho(usuário não autenticado)
              14 de Março de 2013, 10:23

               

              Vamos verificar. Quanto a postagem do script a intenção era mostrar a integra do arquivo que temos instalado aqui, e não apenas mencionar o nome do arquivo, para evitar com isso, comentários já citados no neste portal de que o código fora alterado. A intenção foi somente essa!

  • Ff18160e82e9f0391b5dd820fc06be61?only path=false&size=50&d=404Sales Filho(usuário não autenticado)
    21 de Março de 2013, 8:48

     

    Senhores,

     

    Informo que estou passando pelo mesmo problema. Anexo as configurações LDAP em meu servidor.

     Método de autenticação dos usuários: SIM

    Login Postnuke também permite o login padrão: SIM

    Host LDAP:10.X.X.X

    Porta LDAP:389

    Versão LDAP:3

    LDAP Base DN:ou=PJRN, dc=intrajus,dc=tjrn

    Filtro de usuários LDAP:uid=%sAMAccountName%

    Login de acesso ao LDAP:pnet

    Senha de acesso ao LDAP: ***

    LDAP também permite login padrão: SIM

    Perfil de acesso para novos usuário: TODAS AS FUNCIONALIDADES NÃO ADMINISTRATIVAS

    Campo de Distinguished Name (DN): userPrincipalName

    Campo de Contagem: logonCount

    Campo de nome completo:cn

    Campo de primeiro nome: givenName

    Campo de telefone:telephoneNumber

    ampo de E-mail:mail

    Tipo de caracter do LDAP: UTF-8 

GP-Web v. 8.0.26 (24 Jun)

25 de Junho de 2012, 1:22, por Desconhecido



Treinamento do GP-Web em Porto Alegre-RS

8 de Maio de 2012, 0:22, por Desconhecido

Devido a uma solicitação da Polícia Militar do Rio de Janeiro, que enviará oficiais ao 3º Batalhão de Comunicações, para treinamento no software GP-Web, dentre os dias 15 a 17 de maio do corrente ano, foi franqueado para as Forças Armadas, demais Polícias e Bombeiros Militares do Brasil.



Patrocínio do Tribunal de Justiça do Acre ao GP-Web

23 de Abril de 2012, 12:44, por Desconhecido

Foram realizadas diversas melhorias na versão 8.0.17 do GP-Web, todas patrocinadas pelo Tribunal de Justiça do Acre, com destaque para:



Treinamento do GP-Web para o Ministério da Integração

8 de Abril de 2012, 19:56, por Desconhecido



Treinamento do GP-Web para o INSS

4 de Abril de 2012, 5:49, por Desconhecido