added LDAP config to set filter for finding user attributes (#877)
This commit is contained in:
@@ -570,6 +570,7 @@ class Configuration implements ConfigurationInterface
|
|||||||
->thenInvalid('The ldap.user.filter must be enclosed by a matching number of parentheses "()" and must NOT contain a "%%s" replacer')
|
->thenInvalid('The ldap.user.filter must be enclosed by a matching number of parentheses "()" and must NOT contain a "%%s" replacer')
|
||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
|
->scalarNode('attributesFilter')->defaultValue('(objectClass=*)')->end()
|
||||||
->scalarNode('usernameAttribute')->defaultValue('uid')->end()
|
->scalarNode('usernameAttribute')->defaultValue('uid')->end()
|
||||||
->arrayNode('attributes')
|
->arrayNode('attributes')
|
||||||
->defaultValue([])
|
->defaultValue([])
|
||||||
|
|||||||
@@ -106,7 +106,6 @@ class LdapManager
|
|||||||
public function updateUser(User $user)
|
public function updateUser(User $user)
|
||||||
{
|
{
|
||||||
$baseDn = $user->getPreferenceValue('ldap.dn');
|
$baseDn = $user->getPreferenceValue('ldap.dn');
|
||||||
$filter = '(objectClass=*)';
|
|
||||||
|
|
||||||
if (null === $baseDn) {
|
if (null === $baseDn) {
|
||||||
throw new LdapDriverException('This account is not a registered LDAP user');
|
throw new LdapDriverException('This account is not a registered LDAP user');
|
||||||
@@ -119,7 +118,7 @@ class LdapManager
|
|||||||
}
|
}
|
||||||
$user->setPreferenceValue('ldap.dn', $baseDn);
|
$user->setPreferenceValue('ldap.dn', $baseDn);
|
||||||
|
|
||||||
$entries = $this->driver->search($baseDn, $filter);
|
$entries = $this->driver->search($baseDn, $this->params['attributesFilter']);
|
||||||
|
|
||||||
if ($entries['count'] > 1) {
|
if ($entries['count'] > 1) {
|
||||||
throw new LdapDriverException('This search must only return a single user');
|
throw new LdapDriverException('This search must only return a single user');
|
||||||
|
|||||||
@@ -138,6 +138,7 @@ class AppExtensionTest extends TestCase
|
|||||||
'baseDn' => null,
|
'baseDn' => null,
|
||||||
'filter' => '',
|
'filter' => '',
|
||||||
'usernameAttribute' => 'uid',
|
'usernameAttribute' => 'uid',
|
||||||
|
'attributesFilter' => '(objectClass=*)',
|
||||||
'attributes' => [],
|
'attributes' => [],
|
||||||
],
|
],
|
||||||
'role' => [
|
'role' => [
|
||||||
|
|||||||
@@ -198,6 +198,7 @@ class ConfigurationTest extends TestCase
|
|||||||
'baseDn' => '',
|
'baseDn' => '',
|
||||||
'filter' => '',
|
'filter' => '',
|
||||||
'usernameAttribute' => 'uid',
|
'usernameAttribute' => 'uid',
|
||||||
|
'attributesFilter' => '(objectClass=*)',
|
||||||
'attributes' => [],
|
'attributes' => [],
|
||||||
],
|
],
|
||||||
'role' => [
|
'role' => [
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class LdapManagerTest extends TestCase
|
|||||||
'attributes' => [],
|
'attributes' => [],
|
||||||
'filter' => '(&(objectClass=inetOrgPerson))',
|
'filter' => '(&(objectClass=inetOrgPerson))',
|
||||||
'usernameAttribute' => 'uid',
|
'usernameAttribute' => 'uid',
|
||||||
|
'attributesFilter' => '(objectClass=*)',
|
||||||
'baseDn' => 'ou=users, dc=kimai, dc=org',
|
'baseDn' => 'ou=users, dc=kimai, dc=org',
|
||||||
],
|
],
|
||||||
'role' => $roleConfig,
|
'role' => $roleConfig,
|
||||||
|
|||||||
Reference in New Issue
Block a user