smalot / ldap
PHP库,用于处理LDAP数据。也能解析LDIF文件。
v0.4
2016-07-25 13:44 UTC
Requires
- php: >=5.3.3
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()));