3 namespace BookStack\Auth\Access;
7 * An object-orientated thin abstraction wrapper for common PHP LDAP functions.
8 * Allows the standard LDAP functions to be mocked for testing.
13 * Connect to a LDAP server.
15 * @param string $hostName
20 public function connect($hostName, $port)
22 return ldap_connect($hostName, $port);
26 * Set the value of a LDAP option for the given connection.
28 * @param resource $ldapConnection
34 public function setOption($ldapConnection, $option, $value)
36 return ldap_set_option($ldapConnection, $option, $value);
40 * Start TLS on the given LDAP connection.
42 public function startTls($ldapConnection): bool
44 return ldap_start_tls($ldapConnection);
48 * Set the version number for the given ldap connection.
50 * @param $ldapConnection
55 public function setVersion($ldapConnection, $version)
57 return $this->setOption($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, $version);
61 * Search LDAP tree using the provided filter.
63 * @param resource $ldapConnection
64 * @param string $baseDn
65 * @param string $filter
66 * @param array|null $attributes
70 public function search($ldapConnection, $baseDn, $filter, array $attributes = null)
72 return ldap_search($ldapConnection, $baseDn, $filter, $attributes);
76 * Get entries from an ldap search result.
78 * @param resource $ldapConnection
79 * @param resource $ldapSearchResult
83 public function getEntries($ldapConnection, $ldapSearchResult)
85 return ldap_get_entries($ldapConnection, $ldapSearchResult);
89 * Search and get entries immediately.
91 * @param resource $ldapConnection
92 * @param string $baseDn
93 * @param string $filter
94 * @param array|null $attributes
98 public function searchAndGetEntries($ldapConnection, $baseDn, $filter, array $attributes = null)
100 $search = $this->search($ldapConnection, $baseDn, $filter, $attributes);
102 return $this->getEntries($ldapConnection, $search);
106 * Bind to LDAP directory.
108 * @param resource $ldapConnection
109 * @param string $bindRdn
110 * @param string $bindPassword
114 public function bind($ldapConnection, $bindRdn = null, $bindPassword = null)
116 return ldap_bind($ldapConnection, $bindRdn, $bindPassword);
120 * Explode a LDAP dn string into an array of components.
123 * @param int $withAttrib
127 public function explodeDn(string $dn, int $withAttrib)
129 return ldap_explode_dn($dn, $withAttrib);
133 * Escape a string for use in an LDAP filter.
135 * @param string $value
136 * @param string $ignore
141 public function escape(string $value, string $ignore = '', int $flags = 0)
143 return ldap_escape($value, $ignore, $flags);