diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-01-03 23:45:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-03 23:45:31 +0100 |
commit | 19280adc0d360e546d49e07bb4866e6e756fcbdb (patch) | |
tree | 171d4e9aed97debfe0072b5acfbd507dd7a99f9c | |
parent | 5011142024a2563ac162e17417dd9b7edcae0ff5 (diff) | |
parent | e9eccf34f9258a3720afb3cde218275f4b35f884 (diff) | |
download | nextcloud-server-19280adc0d360e546d49e07bb4866e6e756fcbdb.tar.gz nextcloud-server-19280adc0d360e546d49e07bb4866e6e756fcbdb.zip |
Merge pull request #7611 from nextcloud/fix-7445
Don't attempt to translate login names to uids when uids are provided
-rw-r--r-- | apps/user_ldap/tests/User_LDAPTest.php | 7 | ||||
-rw-r--r-- | core/Controller/LostController.php | 6 | ||||
-rw-r--r-- | lib/private/User/Manager.php | 10 | ||||
-rw-r--r-- | tests/lib/Files/FilesystemTest.php | 33 | ||||
-rw-r--r-- | tests/lib/User/ManagerTest.php | 28 | ||||
-rw-r--r-- | tests/lib/Util/User/Dummy.php | 7 |
6 files changed, 44 insertions, 47 deletions
diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php index 5b53cc3da2c..3262a2360ad 100644 --- a/apps/user_ldap/tests/User_LDAPTest.php +++ b/apps/user_ldap/tests/User_LDAPTest.php @@ -1343,10 +1343,6 @@ class User_LDAPTest extends TestCase { } return true; })); - - $access->userManager->expects($this->atLeastOnce()) - ->method('get') - ->willReturn($this->createMock(User::class)); } /** @@ -1357,6 +1353,9 @@ class User_LDAPTest extends TestCase { $access = $this->getAccessMock(); $this->prepareAccessForSetPassword($access); + $access->userManager->expects($this->atLeastOnce()) + ->method('get') + ->willReturn($this->createMock(User::class)); $backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class), $this->getDefaultPluginManagerMock()); \OC_User::useBackend($backend); diff --git a/core/Controller/LostController.php b/core/Controller/LostController.php index befa1da6944..e7462180388 100644 --- a/core/Controller/LostController.php +++ b/core/Controller/LostController.php @@ -224,6 +224,12 @@ class LostController extends Controller { return new JSONResponse($this->error($this->l10n->t('Password reset is disabled'))); } + \OCP\Util::emitHook( + '\OCA\Files_Sharing\API\Server2Server', + 'preLoginNameUsedAsUserName', + ['uid' => &$user] + ); + // FIXME: use HTTP error codes try { $this->sendEmail($user); diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index c77e0ac89e1..5f2a010561c 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -152,16 +152,6 @@ class Manager extends PublicEmitter implements IUserManager { return $this->cachedUsers[$uid]; } - if (method_exists($backend, 'loginName2UserName')) { - $loginName = $backend->loginName2UserName($uid); - if ($loginName !== false) { - $uid = $loginName; - } - if (isset($this->cachedUsers[$uid])) { - return $this->cachedUsers[$uid]; - } - } - $user = new User($uid, $backend, $this, $this->config); if ($cacheUser) { $this->cachedUsers[$uid] = $user; diff --git a/tests/lib/Files/FilesystemTest.php b/tests/lib/Files/FilesystemTest.php index 1eb6c4fc54b..a98af220ba1 100644 --- a/tests/lib/Files/FilesystemTest.php +++ b/tests/lib/Files/FilesystemTest.php @@ -368,39 +368,6 @@ class FilesystemTest extends \Test\TestCase { $this->assertEquals(2, $thrown); } - public function testUserNameCasing() { - $this->logout(); - $userId = $this->getUniqueID('user_'); - - \OC_User::clearBackends(); - // needed for loginName2UserName mapping - $userBackend = $this->createMock(\OC\User\Database::class); - \OC::$server->getUserManager()->registerBackend($userBackend); - - $userBackend->expects($this->once()) - ->method('userExists') - ->with(strtoupper($userId)) - ->will($this->returnValue(true)); - $userBackend->expects($this->once()) - ->method('loginName2UserName') - ->with(strtoupper($userId)) - ->will($this->returnValue($userId)); - - $view = new \OC\Files\View(); - $this->assertFalse($view->file_exists('/' . $userId)); - - \OC\Files\Filesystem::initMountPoints(strtoupper($userId)); - - list($storage1, $path1) = $view->resolvePath('/' . $userId); - list($storage2, $path2) = $view->resolvePath('/' . strtoupper($userId)); - - $this->assertTrue($storage1->instanceOfStorage('\OCP\Files\IHomeStorage')); - $this->assertEquals('', $path1); - - // not mounted, still on the local root storage - $this->assertEquals(strtoupper($userId), $path2); - } - /** * Tests that the home storage is used for the user's mount point */ diff --git a/tests/lib/User/ManagerTest.php b/tests/lib/User/ManagerTest.php index 0d98a9825de..f6a362a5031 100644 --- a/tests/lib/User/ManagerTest.php +++ b/tests/lib/User/ManagerTest.php @@ -185,6 +185,8 @@ class ManagerTest extends TestCase { ->method('userExists') ->with($this->equalTo('foo')) ->will($this->returnValue(true)); + $backend->expects($this->never()) + ->method('loginName2UserName'); $manager = new \OC\User\Manager($this->config); $manager->registerBackend($backend); @@ -208,6 +210,24 @@ class ManagerTest extends TestCase { $this->assertEquals(null, $manager->get('foo')); } + public function testGetOneBackendDoNotTranslateLoginNames() { + /** + * @var \Test\Util\User\Dummy | \PHPUnit_Framework_MockObject_MockObject $backend + */ + $backend = $this->createMock(\Test\Util\User\Dummy::class); + $backend->expects($this->once()) + ->method('userExists') + ->with($this->equalTo('bLeNdEr')) + ->will($this->returnValue(true)); + $backend->expects($this->never()) + ->method('loginName2UserName'); + + $manager = new \OC\User\Manager($this->config); + $manager->registerBackend($backend); + + $this->assertEquals('bLeNdEr', $manager->get('bLeNdEr')->getUID()); + } + public function testSearchOneBackend() { /** * @var \Test\Util\User\Dummy | \PHPUnit_Framework_MockObject_MockObject $backend @@ -217,6 +237,8 @@ class ManagerTest extends TestCase { ->method('getUsers') ->with($this->equalTo('fo')) ->will($this->returnValue(array('foo', 'afoo'))); + $backend->expects($this->never()) + ->method('loginName2UserName'); $manager = new \OC\User\Manager($this->config); $manager->registerBackend($backend); @@ -236,6 +258,8 @@ class ManagerTest extends TestCase { ->method('getUsers') ->with($this->equalTo('fo'), $this->equalTo(3), $this->equalTo(1)) ->will($this->returnValue(array('foo1', 'foo2'))); + $backend1->expects($this->never()) + ->method('loginName2UserName'); /** * @var \Test\Util\User\Dummy | \PHPUnit_Framework_MockObject_MockObject $backend2 @@ -245,6 +269,8 @@ class ManagerTest extends TestCase { ->method('getUsers') ->with($this->equalTo('fo'), $this->equalTo(3), $this->equalTo(1)) ->will($this->returnValue(array('foo3'))); + $backend2->expects($this->never()) + ->method('loginName2UserName'); $manager = new \OC\User\Manager($this->config); $manager->registerBackend($backend1); @@ -324,6 +350,8 @@ class ManagerTest extends TestCase { ->method('userExists') ->with($this->equalTo('foo')) ->will($this->returnValue(false)); + $backend->expects($this->never()) + ->method('loginName2UserName'); $manager = new \OC\User\Manager($this->config); $manager->registerBackend($backend); diff --git a/tests/lib/Util/User/Dummy.php b/tests/lib/Util/User/Dummy.php index 806a97bacba..e77902d6f4e 100644 --- a/tests/lib/Util/User/Dummy.php +++ b/tests/lib/Util/User/Dummy.php @@ -108,6 +108,13 @@ class Dummy extends Backend implements \OCP\IUserBackend { return false; } + public function loginName2UserName($loginName) { + if(isset($this->users[strtolower($loginName)])) { + return strtolower($loginName); + } + return false; + } + /** * Get a list of all users * |