summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-01-03 23:45:31 +0100
committerGitHub <noreply@github.com>2018-01-03 23:45:31 +0100
commit19280adc0d360e546d49e07bb4866e6e756fcbdb (patch)
tree171d4e9aed97debfe0072b5acfbd507dd7a99f9c
parent5011142024a2563ac162e17417dd9b7edcae0ff5 (diff)
parente9eccf34f9258a3720afb3cde218275f4b35f884 (diff)
downloadnextcloud-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.php7
-rw-r--r--core/Controller/LostController.php6
-rw-r--r--lib/private/User/Manager.php10
-rw-r--r--tests/lib/Files/FilesystemTest.php33
-rw-r--r--tests/lib/User/ManagerTest.php28
-rw-r--r--tests/lib/Util/User/Dummy.php7
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
*