Browse Source

never translate login names when requiring with a user id

where appropriate, the preLoginNameUsedAsUserName hook should be thrown.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
tags/v13.0.0beta4
Arthur Schiwon 6 years ago
parent
commit
4f3d52a364
No account linked to committer's email address
3 changed files with 34 additions and 22 deletions
  1. 6
    0
      core/Controller/LostController.php
  2. 0
    10
      lib/private/User/Manager.php
  3. 28
    12
      tests/lib/User/ManagerTest.php

+ 6
- 0
core/Controller/LostController.php View File

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

+ 0
- 10
lib/private/User/Manager.php View File

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

+ 28
- 12
tests/lib/User/ManagerTest.php View File

@@ -185,9 +185,8 @@ class ManagerTest extends TestCase {
->method('userExists')
->with($this->equalTo('foo'))
->will($this->returnValue(true));
$backend->expects($this->once())
->method('loginName2UserName')
->willReturn(false);
$backend->expects($this->never())
->method('loginName2UserName');

$manager = new \OC\User\Manager($this->config);
$manager->registerBackend($backend);
@@ -211,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
@@ -220,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);
@@ -239,9 +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->exactly(2))
->method('loginName2UserName')
->willReturn(false);
$backend1->expects($this->never())
->method('loginName2UserName');

/**
* @var \Test\Util\User\Dummy | \PHPUnit_Framework_MockObject_MockObject $backend2
@@ -251,9 +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->once())
->method('loginName2UserName')
->willReturn(false);
$backend2->expects($this->never())
->method('loginName2UserName');

$manager = new \OC\User\Manager($this->config);
$manager->registerBackend($backend1);
@@ -333,9 +350,8 @@ class ManagerTest extends TestCase {
->method('userExists')
->with($this->equalTo('foo'))
->will($this->returnValue(false));
$backend->expects($this->once())
->method('loginName2UserName')
->willReturn(false);
$backend->expects($this->never())
->method('loginName2UserName');

$manager = new \OC\User\Manager($this->config);
$manager->registerBackend($backend);

Loading…
Cancel
Save