diff options
author | Arthur Schiwon <blizzz@owncloud.com> | 2014-10-27 15:58:23 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@owncloud.com> | 2014-10-27 15:58:23 +0100 |
commit | 05b2a037f227a7ebe0bf8e9325c271d698f02e1b (patch) | |
tree | 307ef026b4a6c419d3ae38effe384cf86f32236b /apps | |
parent | 5d391910c52309d7c538a2494927b3720dc06d0a (diff) | |
download | nextcloud-server-05b2a037f227a7ebe0bf8e9325c271d698f02e1b.tar.gz nextcloud-server-05b2a037f227a7ebe0bf8e9325c271d698f02e1b.zip |
dont fail with 500 if configured display name attribute is not set
Diffstat (limited to 'apps')
-rw-r--r-- | apps/user_ldap/tests/user_ldap.php | 24 | ||||
-rw-r--r-- | apps/user_ldap/user_ldap.php | 8 |
2 files changed, 29 insertions, 3 deletions
diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php index e51f6cb5bb9..c89edc33fa9 100644 --- a/apps/user_ldap/tests/user_ldap.php +++ b/apps/user_ldap/tests/user_ldap.php @@ -98,9 +98,10 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { /** * Prepares the Access mock for checkPassword tests * @param \OCA\user_ldap\lib\Access $access mock + * @param bool noDisplayName * @return void */ - private function prepareAccessForCheckPassword(&$access) { + private function prepareAccessForCheckPassword(&$access, $noDisplayName = false) { $access->expects($this->once()) ->method('escapeFilterPart') ->will($this->returnCallback(function($uid) { @@ -125,10 +126,14 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { return array(); })); + $retVal = 'gunslinger'; + if($noDisplayName === true) { + $retVal = false; + } $access->expects($this->any()) ->method('dn2username') ->with($this->equalTo('dnOfRoland,dc=test')) - ->will($this->returnValue('gunslinger')); + ->will($this->returnValue($retVal)); $access->expects($this->any()) ->method('stringResemblesDN') @@ -178,6 +183,21 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { $this->assertFalse($result); } + public function testCheckPasswordNoDisplayName() { + $access = $this->getAccessMock(); + + $this->prepareAccessForCheckPassword($access, true); + $access->expects($this->once()) + ->method('username2dn') + ->will($this->returnValue(false)); + + $backend = new UserLDAP($access); + \OC_User::useBackend($backend); + + $result = $backend->checkPassword('roland', 'dt19'); + $this->assertFalse($result); + } + public function testCheckPasswordPublicAPI() { $access = $this->getAccessMock(); $this->prepareAccessForCheckPassword($access); diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index ae4dfec5118..6e244311d4a 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -64,8 +64,14 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface { return false; } $dn = $ldap_users[0]; - $user = $this->access->userManager->get($dn); + if(is_null($user)) { + \OCP\Util::writeLog('user_ldap', + 'LDAP Login: Could not get user object for DN ' . $dn . + '. Maybe the LDAP entry has no set display name attribute?', + \OCP\Util::WARN); + return false; + } if($user->getUsername() !== false) { //are the credentials OK? if(!$this->access->areCredentialsValid($dn, $password)) { |