summaryrefslogtreecommitdiff
path: root/doc/plugin-ldap-client.markdown
blob: 312eea71427eb9604845e47f2d3fcf2b49dc1a39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
LDAP Library
============

To facilitate LDAP integration, Kanboard has its own LDAP library.
This library can perform common operations.

Client
------

Class: `Kanboard\Core\Ldap\Client`

To connect to your LDAP server easily, use this method:

```php
use Kanboard\Core\Ldap\Client as LdapClient;
use Kanboard\Core\Ldap\ClientException as LdapException;

try {
    $client = LdapClient::connect();

    // Get native LDAP resource
    $resource = $client->getConnection();

    // ...

} catch (LdapException $e) {
    // ...
}
```

LDAP Queries
------------

Classes:

- `Kanboard\Core\Ldap\Query`
- `Kanboard\Core\Ldap\Entries`
- `Kanboard\Core\Ldap\Entry`

Example to query the LDAP directory:

```php

$query = new Query($client)
$query->execute('ou=People,dc=kanboard,dc=local', 'uid=my_user', array('cn', 'mail'));

if ($query->hasResult()) {
    $entries = $query->getEntries(); // Return an instance of Entries
}
```

Read one entry:

```php
$firstEntry = $query->getEntries()->getFirstEntry();
$email = $firstEntry->getFirstValue('mail');
$name = $firstEntry->getFirstValue('cn', 'Default Name');
```

Read multiple entries:

```php
foreach ($query->getEntries()->getAll() as $entry) {
    $emails = $entry->getAll('mail'); // Fetch all emails
    $dn = $entry->getDn(); // Get LDAP DN of this user

    // Check if a value is present for an attribute
    if ($entry->hasValue('mail', 'user2@localhost')) {
        // ...
    }
}
```

User Helper
-----------

Class: `Kanboard\Core\Ldap\User`

Fetch a single user in one line:

```php
// Return an instance of LdapUserProvider
$user = User::getUser($client, 'my_username');
```

Group Helper
------------

Class: `Kanboard\Core\Ldap\Group`

Fetch groups in one line:

```php
// Define LDAP filter
$filter = '(&(objectClass=group)(sAMAccountName=My group*))';

// Return a list of LdapGroupProvider
$groups = Group::getGroups($client, $filter);
```