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 an LDAP server.
16 public function connect(string $hostName, int $port)
18 return ldap_connect($hostName, $port);
22 * Set the value of a LDAP option for the given connection.
24 * @param resource $ldapConnection
27 public function setOption($ldapConnection, int $option, $value): bool
29 return ldap_set_option($ldapConnection, $option, $value);
33 * Start TLS on the given LDAP connection.
35 public function startTls($ldapConnection): bool
37 return ldap_start_tls($ldapConnection);
41 * Set the version number for the given ldap connection.
43 * @param resource $ldapConnection
45 public function setVersion($ldapConnection, int $version): bool
47 return $this->setOption($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, $version);
51 * Search LDAP tree using the provided filter.
53 * @param resource $ldapConnection
54 * @param string $baseDn
55 * @param string $filter
56 * @param array|null $attributes
60 public function search($ldapConnection, $baseDn, $filter, array $attributes = null)
62 return ldap_search($ldapConnection, $baseDn, $filter, $attributes);
66 * Get entries from an ldap search result.
68 * @param resource $ldapConnection
69 * @param resource $ldapSearchResult
73 public function getEntries($ldapConnection, $ldapSearchResult)
75 return ldap_get_entries($ldapConnection, $ldapSearchResult);
79 * Search and get entries immediately.
81 * @param resource $ldapConnection
82 * @param string $baseDn
83 * @param string $filter
84 * @param array|null $attributes
88 public function searchAndGetEntries($ldapConnection, $baseDn, $filter, array $attributes = null)
90 $search = $this->search($ldapConnection, $baseDn, $filter, $attributes);
92 return $this->getEntries($ldapConnection, $search);
96 * Bind to LDAP directory.
98 * @param resource $ldapConnection
99 * @param string $bindRdn
100 * @param string $bindPassword
104 public function bind($ldapConnection, $bindRdn = null, $bindPassword = null)
106 return ldap_bind($ldapConnection, $bindRdn, $bindPassword);
110 * Explode a LDAP dn string into an array of components.
113 * @param int $withAttrib
117 public function explodeDn(string $dn, int $withAttrib)
119 return ldap_explode_dn($dn, $withAttrib);
123 * Escape a string for use in an LDAP filter.
125 * @param string $value
126 * @param string $ignore
131 public function escape(string $value, string $ignore = '', int $flags = 0)
133 return ldap_escape($value, $ignore, $flags);