smalot/ldap

PHP库,用于处理LDAP数据。也能解析LDIF文件。

v0.4 2016-07-25 13:44 UTC

This package is not auto-updated.

Last update: 2024-09-11 12:14:59 UTC


README

PHP库,用于处理LDAP数据。也能解析LDIF文件。

先决条件

您需要至少PHP 5.3.3和启用LDAP php模块。

安装

使用composer下载项目

在composer.json中添加LDAP

{
    "require": {
        "smalot/ldap": "*"
    }
}

现在运行以下命令让composer下载包

$ php composer.phar update smalot/ldap

Composer会将包安装到您的项目的smalot/ldap目录。

文档

连接到LDAP服务器(简单连接)

<?php

require 'vendor/autoload.php';

$server  = new \Smalot\Ldap\Server();
$server->bind('cn=admin,dc=nodomain', 'S3CR3T');

连接到LDAP服务器(带选项)

<?php

require 'vendor/autoload.php';

$options = array(
    LDAP_OPT_PROTOCOL_VERSION => 3,
);

$server  = new \Smalot\Ldap\Server('127.0.0.1', 389, $options);
$server->bind('cn=admin,dc=nodomain', 'S3CR3T');

查找对象

<?php

require 'vendor/autoload.php';

$server  = new \Smalot\Ldap\Server();
$server->bind('cn=admin,dc=nodomain', 'S3CR3T');

$repository = $server->getDefaultRepository();
$results    = $repository->search('ou=Users,dc=nodomain', '(objectClass=*)');

while ($result = $results->fetchEntry()) {
    // Handle result object acording to your needs
}

使用其区分名称查找对象

<?php

require 'vendor/autoload.php';

$server  = new \Smalot\Ldap\Server();
$server->bind('cn=admin,dc=nodomain', 'S3CR3T');

$repository = $server->getDefaultRepository();

// Returns null if nothing found
$object = $repository->searchDN('uid=User1,ou=Users,dc=nodomain');

创建对象(并添加)

<?php

require 'vendor/autoload.php';

$server  = new \Smalot\Ldap\Server();
$server->bind('cn=admin,dc=nodomain', 'S3CR3T');

$repository = $server->getDefaultRepository();

// Create a new user
$dn   = 'uid=User1,ou=Users,dc=nodomain';
$user = new \Smalot\Ldap\Object($dn);
$user->get('objectClass')->add('top');
$user->get('objectClass')->add('inetOrgPerson');
$user->get('objectClass')->add('posixAccount');
$user->get('displayName')->setValue('Username');
$user->get('mail')->set('username@example.org');
$user->get('cn')->set('Username');
$user->get('sn')->set('Username');
$user->get('givenName')->set('Username');
$user->get('displayName')->set('Username');
$user->get('gidNumber')->set(0);
$user->get('uidNumber')->set(1001);
$user->get('homeDirectory')->set('/home/false');
$user->get('loginShell')->set('/sbin/nologin');

$password = \Smalot\Ldap\Tools::generateRandomPassword();
$user->get('userPassword')->set(\Smalot\Ldap\Tools::encodePassword($password));

// ...

// Store the new user
$repository->add($user);


// Create a new group
$dn    = 'cn=Group1,ou=Groups,dc=nodomain';
$group = new \Smalot\Ldap\Object($dn);
$group->get('objectClass')->add('top');
$group->get('objectClass')->add('posixGroup');
$group->get('gidNumber')->set(2001);

// Store the new group
$repository->add($group);


// Link user to the group
$repository->modify($group, 'add', array('memberUid' => $user->get('uid')->getValue()));