3 namespace BookStack\Auth\Access;
9 * An object-orientated thin abstraction wrapper for common PHP LDAP functions.
10 * Allows the standard LDAP functions to be mocked for testing.
15 * Connect to an LDAP server.
19 public function connect(string $hostName, int $port)
21 return ldap_connect($hostName, $port);
25 * Set the value of a LDAP option for the given connection.
27 * @param resource $ldapConnection
30 public function setOption($ldapConnection, int $option, $value): bool
32 return ldap_set_option($ldapConnection, $option, $value);
36 * Start TLS on the given LDAP connection.
38 * @throws ErrorException
40 public function startTls($ldapConnection): bool
42 return ldap_start_tls($ldapConnection);
46 * Set the version number for the given ldap connection.
48 * @param resource $ldapConnection
50 public function setVersion($ldapConnection, int $version): bool
52 return $this->setOption($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, $version);
56 * Search LDAP tree using the provided filter.
58 * @param resource $ldapConnection
59 * @param string $baseDn
60 * @param string $filter
61 * @param array|null $attributes
65 public function search($ldapConnection, $baseDn, $filter, array $attributes = null)
67 return ldap_search($ldapConnection, $baseDn, $filter, $attributes);
71 * Get entries from an ldap search result.
73 * @param resource $ldapConnection
74 * @param resource $ldapSearchResult
78 public function getEntries($ldapConnection, $ldapSearchResult)
80 return ldap_get_entries($ldapConnection, $ldapSearchResult);
84 * Search and get entries immediately.
86 * @param resource $ldapConnection
87 * @param string $baseDn
88 * @param string $filter
89 * @param array|null $attributes
93 public function searchAndGetEntries($ldapConnection, $baseDn, $filter, array $attributes = null)
95 $search = $this->search($ldapConnection, $baseDn, $filter, $attributes);
97 return $this->getEntries($ldapConnection, $search);
101 * Bind to LDAP directory.
103 * @param resource $ldapConnection
104 * @throws ErrorException
106 public function bind($ldapConnection, string $bindRdn = null, string $bindPassword = null): bool
108 return ldap_bind($ldapConnection, $bindRdn, $bindPassword);
112 * Explode a LDAP dn string into an array of components.
115 * @param int $withAttrib
119 public function explodeDn(string $dn, int $withAttrib)
121 return ldap_explode_dn($dn, $withAttrib);
125 * Escape a string for use in an LDAP filter.
127 * @param string $value
128 * @param string $ignore
133 public function escape(string $value, string $ignore = '', int $flags = 0)
135 return ldap_escape($value, $ignore, $flags);