Ticket #1319 (closed defeito: fixed)

Opened 10 years ago

Last modified 10 years ago

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:1 Changed 10 years ago by rommelcysne

  • Description modified (diff)

comment:2 Changed 10 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 10 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 10 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 10 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 10 years ago by rommelcysne

  • Status changed from closed to reopened
  • Resolution fixed deleted

comment:7 Changed 10 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.

Note: See TracTickets for help on using tickets.