1 <?php namespace BookStack\Auth\Access;
5 * An object-orientated thin abstraction wrapper for common PHP LDAP functions.
6 * Allows the standard LDAP functions to be mocked for testing.
12 * Connect to a LDAP server.
13 * @param string $hostName
17 public function connect($hostName, $port)
19 return ldap_connect($hostName, $port);
23 * Set the value of a LDAP option for the given connection.
24 * @param resource $ldapConnection
29 public function setOption($ldapConnection, $option, $value)
31 return ldap_set_option($ldapConnection, $option, $value);
35 * Start TLS on the given LDAP connection.
37 public function startTls($ldapConnection): bool
39 return ldap_start_tls($ldapConnection);
43 * Set the version number for the given ldap connection.
44 * @param $ldapConnection
48 public function setVersion($ldapConnection, $version)
50 return $this->setOption($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, $version);
54 * Search LDAP tree using the provided filter.
55 * @param resource $ldapConnection
56 * @param string $baseDn
57 * @param string $filter
58 * @param array|null $attributes
61 public function search($ldapConnection, $baseDn, $filter, array $attributes = null)
63 return ldap_search($ldapConnection, $baseDn, $filter, $attributes);
67 * Get entries from an ldap search result.
68 * @param resource $ldapConnection
69 * @param resource $ldapSearchResult
72 public function getEntries($ldapConnection, $ldapSearchResult)
74 return ldap_get_entries($ldapConnection, $ldapSearchResult);
78 * Search and get entries immediately.
79 * @param resource $ldapConnection
80 * @param string $baseDn
81 * @param string $filter
82 * @param array|null $attributes
85 public function searchAndGetEntries($ldapConnection, $baseDn, $filter, array $attributes = null)
87 $search = $this->search($ldapConnection, $baseDn, $filter, $attributes);
88 return $this->getEntries($ldapConnection, $search);
92 * Bind to LDAP directory.
93 * @param resource $ldapConnection
94 * @param string $bindRdn
95 * @param string $bindPassword
98 public function bind($ldapConnection, $bindRdn = null, $bindPassword = null)
100 return ldap_bind($ldapConnection, $bindRdn, $bindPassword);
104 * Explode a LDAP dn string into an array of components.
106 * @param int $withAttrib
109 public function explodeDn(string $dn, int $withAttrib)
111 return ldap_explode_dn($dn, $withAttrib);
115 * Escape a string for use in an LDAP filter.
116 * @param string $value
117 * @param string $ignore
121 public function escape(string $value, string $ignore = "", int $flags = 0)
123 return ldap_escape($value, $ignore, $flags);