]> BookStack Code Mirror - bookstack/blob - app/Auth/Access/Ldap.php
Added locale and text direction to html templates
[bookstack] / app / Auth / Access / Ldap.php
1 <?php namespace BookStack\Auth\Access;
2
3 /**
4  * Class Ldap
5  * An object-orientated thin abstraction wrapper for common PHP LDAP functions.
6  * Allows the standard LDAP functions to be mocked for testing.
7  * @package BookStack\Services
8  */
9 class Ldap
10 {
11
12     /**
13      * Connect to a LDAP server.
14      * @param string $hostName
15      * @param int    $port
16      * @return resource
17      */
18     public function connect($hostName, $port)
19     {
20         return ldap_connect($hostName, $port);
21     }
22
23     /**
24      * Set the value of a LDAP option for the given connection.
25      * @param resource $ldapConnection
26      * @param int $option
27      * @param mixed $value
28      * @return bool
29      */
30     public function setOption($ldapConnection, $option, $value)
31     {
32         return ldap_set_option($ldapConnection, $option, $value);
33     }
34
35     /**
36      * Set the version number for the given ldap connection.
37      * @param $ldapConnection
38      * @param $version
39      * @return bool
40      */
41     public function setVersion($ldapConnection, $version)
42     {
43         return $this->setOption($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, $version);
44     }
45
46     /**
47      * Search LDAP tree using the provided filter.
48      * @param resource   $ldapConnection
49      * @param string     $baseDn
50      * @param string     $filter
51      * @param array|null $attributes
52      * @return resource
53      */
54     public function search($ldapConnection, $baseDn, $filter, array $attributes = null)
55     {
56         return ldap_search($ldapConnection, $baseDn, $filter, $attributes);
57     }
58
59     /**
60      * Get entries from an ldap search result.
61      * @param resource $ldapConnection
62      * @param resource $ldapSearchResult
63      * @return array
64      */
65     public function getEntries($ldapConnection, $ldapSearchResult)
66     {
67         return ldap_get_entries($ldapConnection, $ldapSearchResult);
68     }
69
70     /**
71      * Search and get entries immediately.
72      * @param resource   $ldapConnection
73      * @param string     $baseDn
74      * @param string     $filter
75      * @param array|null $attributes
76      * @return resource
77      */
78     public function searchAndGetEntries($ldapConnection, $baseDn, $filter, array $attributes = null)
79     {
80         $search = $this->search($ldapConnection, $baseDn, $filter, $attributes);
81         return $this->getEntries($ldapConnection, $search);
82     }
83
84     /**
85      * Bind to LDAP directory.
86      * @param resource $ldapConnection
87      * @param string   $bindRdn
88      * @param string   $bindPassword
89      * @return bool
90      */
91     public function bind($ldapConnection, $bindRdn = null, $bindPassword = null)
92     {
93         return ldap_bind($ldapConnection, $bindRdn, $bindPassword);
94     }
95
96     /**
97      * Explode a LDAP dn string into an array of components.
98      * @param string $dn
99      * @param int $withAttrib
100      * @return array
101      */
102     public function explodeDn(string $dn, int $withAttrib)
103     {
104         return ldap_explode_dn($dn, $withAttrib);
105     }
106
107     /**
108      * Escape a string for use in an LDAP filter.
109      * @param string $value
110      * @param string $ignore
111      * @param int $flags
112      * @return string
113      */
114     public function escape(string $value, string $ignore = "", int $flags = 0)
115     {
116         return ldap_escape($value, $ignore, $flags);
117     }
118 }
Morty Proxy This is a proxified and sanitized view of the page, visit original site.