Ticket #1319 (closed defeito: fixed)
Possibilidade de erro na pesquisa do ContacCenter
Reported by: | rommelcysne | Owned by: | rommelcysne |
---|---|---|---|
Priority: | normal | Milestone: | Expresso 2.2 |
Component: | ContactCenter | Version: | branch 2.2 |
Severity: | média | Keywords: | SERPRO 2.2 UNIFICA |
Cc: | WorkGroup: |
Description (last modified by rommelcysne) (diff)
O erro de pesquisa nos contatos ocorre em função da forma como o Contact Center realiza a busca por contatos.
do item "Contexto de LDAP" configurado através do módulo Administrador.
Um exemplo do ocorreu conosco:
O contexto de LDAP configurado era ou=org,dc=emp,dc=gov,dc=br.
Ao realizar a pesquisa, o expresso formava a seguinte base, conforme log "acces":
base="uid=CPF,ou=org,ou=org,dc=emp,dc=gov,dc=br"
Após configurarmos o contexto LDAP para dc=emp,dc=gov,dc=br, a pesquisa passou a funcionar e o log registrou:
base="uid=CPF,ou=org,dc=emp,dc=gov,dc=br"
O problema é gerado porque o Expresso, deliberadamente, substitui, do DN do usuário, tudo o que coincidir com "dc=(.*)" pelo valor que estiver configurado na opção citada acima, "Contexto de LDAP", nas configurações do ContactCenter? do módulo Administrador.
A linha que faz isso é:
$id_contact = preg_replace("/dc=(.*)/i",$this->src_infodn? ,$id_contact);
E está no arquivo class.bo_global_ldap_catalog.inc.php.
O resultado é que o DN do usuário fica errado (vide exemplo acima) e como conseqüência nenhum contato é encontrado.
Change History
comment:2 Changed 14 years ago by rommelcysne
- Status changed from new to closed
- Resolution set to fixed
Foi necessária uma modificação na pesquisa do ContactCenter? para aceitar outras estruturas de diretórios . Por questões de compatibilidade com a comunidade, foi adicionada uma opção de configuração em que o administrador informa se deseja montar o DN dos contatos dinamicamente.
A opção Sim mantém o comportamento atual e o administrador deve informar a raiz do seu ldap na configuração "Contexto de LDAP".
Com a opção Não, o código que monta o DN do contato, durante o processo de busca, não é executado. Desta maneira, o administrador fica responsável por informar o caminho DN completo na opção "Contexto de LDAP".
Atenção: Como se trata de um parâmetro novo, será obrigatório a configuração de inicial de um valor para poder ficar gravado em banco.
Os arquivos alterados foram:
- contactcenter/inc/class.bo_global_ldap_catalog.inc.php
- contactcenter/inc/class.bo_ldap_manager.inc.php
- contactcenter/templates/default/config.tpl
Commit [3262] do branch 2.2.
comment:3 Changed 14 years ago by rodsouza
A falta da configuração citada deveria ser tratada, e nesse caso assumindo a configuração padrão (possivelmente 'SIM')
comment:4 Changed 14 years ago by niltonneto
Rommel, o Rodrigo tem razão. Todo novo parâmetro adicionado em qualquer lugar do Expresso (preferência, configurações) deve preservar o comportamento atual caso seu valor seja inexistente (nulo) no banco de dados. Nesse caso, acho melhor inverter também.
comment:5 Changed 14 years ago by rommelcysne
Mas é isso mesmo, o "Sim", que é o padrão, mantém o comportamento atual. Só vou precisar tratar o caso de ser nulo, realmente não pensei na possibilidade.
comment:6 Changed 14 years ago by rommelcysne
- Status changed from closed to reopened
- Resolution fixed deleted
comment:7 Changed 14 years ago by rommelcysne
- Status changed from reopened to closed
- Resolution set to fixed
Fiz uma alteração na function bo_ldap_manager(), para considerar a possibilidade de o parâmetro cc_ldap_subLevels não estar configurado (!isset).
Arquivo alterado:
- contactcenter/inc/class.bo_ldap_manager.inc.php
O commit está na revisão [3288] do branch 2.2.