added LDAP config to set filter for finding user attributes (#877)

This commit is contained in:
Kevin Papst
2019-06-23 12:38:11 +02:00
committed by GitHub
parent 9fbbaf9b88
commit 7b95750dcf
5 changed files with 5 additions and 2 deletions

View File

@@ -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([])

View File

@@ -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');

View File

@@ -138,6 +138,7 @@ class AppExtensionTest extends TestCase
'baseDn' => null, 'baseDn' => null,
'filter' => '', 'filter' => '',
'usernameAttribute' => 'uid', 'usernameAttribute' => 'uid',
'attributesFilter' => '(objectClass=*)',
'attributes' => [], 'attributes' => [],
], ],
'role' => [ 'role' => [

View File

@@ -198,6 +198,7 @@ class ConfigurationTest extends TestCase
'baseDn' => '', 'baseDn' => '',
'filter' => '', 'filter' => '',
'usernameAttribute' => 'uid', 'usernameAttribute' => 'uid',
'attributesFilter' => '(objectClass=*)',
'attributes' => [], 'attributes' => [],
], ],
'role' => [ 'role' => [

View File

@@ -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,