CakePHP é um dos meus xodós para desenvolvimento WEB, com ele me sinto extremamente produtivo. Eis que surgi-o a necessidade de integrar uma aplicação com autenticação LDAP, assim como a necessidade da aplicação interagir com os campos do LDAP. Solução no CakePHP extremamente elegante, rápida e simples.

Bakery como todo bom padeiro sabe, é uma fonte de códigos para todas as áreas, eis que alguem desenvolveu um datasource para o LDAP, ou seja utilizar o data mapping do CakePHP e o ORM do CakePHP com o LDAP, assim é possível conectar no LDAP, e tratar ele como modelos na estrutura de MVC.

Bom então vamos fazer o bolo, mão na massa:

  1. Download do Datasource;
  2. Salve o código dentro do diretório dos models, no diretório datasources, com o nome de ldap_source.php. Ficando assim application > models > datasources > ldap_source.php;
  3. Vá até o diretório configs no arquivo database e crie uma nova conexão:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     var $ldap = array (
    'datasource' => 'ldap',
    'host' => 'host',
    'port' => 389,
    'basedn' => 'dc=name,dc=com',
    'login' => 'cn=admin,dc=name,dc=com',
    'password' => 'password',
    'version' => 3,
    'database' => ''
    );
  4. Crie um modelo User.php
    1
    2
    3
    4
    5
    6
    7
    8
    
    < ?php
    class User extends AppModel {
    var $name = 'User';
    var $useDbConfig = 'ldap'; //usar a configuração do ldap
    var $primaryKey = 'uid';   //chave única no ldap
    var $useTable = 'ou=users'; //nome do campo no ldap com os dados necessários para esse modelo
    }
    ?>

E pronto, apenas com esses passos já é possivel instanciar o modelo User no seu controller, e utilizar métodos como:

1
2
$user->find('all');
$user->find('User.name="Vinícius Krolow"');

É possível ainda integrar ao componente Auth, que em um próximo post, irei mostrar como fazer.