Melhoria #416
Retornar multiplos valores em consulta Ldap da Api
100%
Descrição
Modificar o webservice Admin/SearchLdap da API para retornar um array com todas as entradas obtidas pela consulta.
Atualmente está sendo retornado sempre a primeira entrada encontrada.
Ver código expressoAdmin1_2/inc/class.functions.inc.php
Function getlist()
elseif( $type == 'api') { $queryLDAP = ( ( unserialize($query) ) ? unserialize($query) : $query ); $justthese = array("uidnumber", "uid", "cn", "mail", "dn", "cpf", "rg", "rgUF", "jpegPhoto"); $search = ldap_search( $ldap_conn, $contexts[0], "(&(phpgwAccountType=u)(".$queryLDAP[0]."=".$queryLDAP[1]."))", $justthese ); $info = ldap_get_entries( $ldap_conn, $search ); $return = false; if( $info['count'] > 0 ) { $return[0]['accountId'] = $info[0]['uidnumber'][0]; $return[0]['accountLid'] = $info[0]['uid'][0]; $return[0]['accountDn'] = $info[0]['dn']; $return[0]['accountCn'] = $info[0]['cn'][0]; $return[0]['accountMail'] = $info[0]['mail'][0]; $return[0]['accountCpf'] = $info[0]['cpf'][0]; $return[0]['accountRG'] = $info[0]['rg'][0]; $return[0]['accountRgUF'] = $info[0]['rguf'][0]; $return[0]['accountPhoto'] = ((isset($info[0]['jpegphoto']['count']) && $info[0]['jpegphoto']['count'] == 1 ) ? true : false ); } ldap_close($ldap_conn); return $return; }
Histórico
#1 Atualizado por Mauricio Luiz Viani há quase 6 anos
- Descrição atualizado(a) (diff)
#2 Atualizado por Mauricio Luiz Viani há aproximadamente 5 anos
- Versão alterado de Backlog para Expresso Livre - Milestone 31
#3 Atualizado por Alexandre Luiz Correia há aproximadamente 5 anos
- % Terminado alterado de 0 para 100
- Atribuído para ajustado para Alexandre Luiz Correia
- Situação alterado de Nova para Fechada
Obersvando e testando a rotina, relato que tal modificação para vários registro é desnecessária. Pois a consulta feita pela API, utiliza os seguintes filtros:
- Se for email : (&(phpgwAccountType=u)(mail=fulano@expressovm));
- Se for RG : (&(phpgwAccountType=u)(rg=000000));
- Se for CPF : (&(phpgwAccountType=u)(cpf=00000000000));
- Se for uid : (&(phpgwAccountType=u)(uid=fulano));
Dentre os parâmetros acima, o único que aceita mais de uma entrada no LDAP é o campo RG. Sendo assim todos os outros voltaram apenas um usuário do catálogo LDAP.