Merge pull request #7694 from nextcloud/stable12-7611
[stable12] Don't attempt to translate login names to uids when uids are provided
This commit is contained in:
commit
1f875eca3c
|
@ -1035,9 +1035,11 @@ class User_LDAPTest extends TestCase {
|
|||
->will($this->returnValue('roland'));
|
||||
|
||||
$access->expects($this->any())
|
||||
->method('stringResemblesDN')
|
||||
->with($this->equalTo('dnOfRoland,dc=test'))
|
||||
->will($this->returnValue(true));
|
||||
->method('stringResemblesDN')
|
||||
->will($this->returnCallback(function($string) {
|
||||
// very simplified
|
||||
return strpos($string, ',') !== false;
|
||||
}));
|
||||
|
||||
$access->expects($this->any())
|
||||
->method('setPassword')
|
||||
|
|
|
@ -223,6 +223,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);
|
||||
|
|
|
@ -43,7 +43,7 @@ namespace Composer\Autoload;
|
|||
class ClassLoader
|
||||
{
|
||||
// PSR-4
|
||||
private $prefixLengthsPsr4 = array();
|
||||
private $firstCharsPsr4 = array();
|
||||
private $prefixDirsPsr4 = array();
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
|
@ -170,11 +170,10 @@ class ClassLoader
|
|||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
if ('\\' !== substr($prefix, -1)) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->firstCharsPsr4[$prefix[0]] = true;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
|
@ -221,11 +220,10 @@ class ClassLoader
|
|||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
if ('\\' !== substr($prefix, -1)) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->firstCharsPsr4[$prefix[0]] = true;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
@ -373,15 +371,15 @@ class ClassLoader
|
|||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
if (isset($this->firstCharsPsr4[$first])) {
|
||||
$subPath = $class;
|
||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||
$subPath = substr($subPath, 0, $lastPos);
|
||||
$search = $subPath.'\\';
|
||||
if (isset($this->prefixDirsPsr4[$search])) {
|
||||
$pathEnd = substr($logicalPathPsr4, $lastPos + 1);
|
||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||
$length = $this->prefixLengthsPsr4[$first][$search];
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $pathEnd)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,14 +6,8 @@ namespace Composer\Autoload;
|
|||
|
||||
class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
|
||||
{
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'O' =>
|
||||
array (
|
||||
'OC\\Settings\\' => 12,
|
||||
'OC\\Core\\' => 8,
|
||||
'OC\\' => 3,
|
||||
'OCP\\' => 4,
|
||||
),
|
||||
public static $firstCharsPsr4 = array (
|
||||
'O' => true,
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
|
@ -914,7 +908,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
|
|||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixLengthsPsr4;
|
||||
$loader->firstCharsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$firstCharsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$classMap;
|
||||
|
||||
|
|
|
@ -154,16 +154,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;
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -184,6 +184,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);
|
||||
|
@ -207,6 +209,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
|
||||
|
@ -216,6 +236,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);
|
||||
|
@ -235,6 +257,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
|
||||
|
@ -244,6 +268,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);
|
||||
|
|
|
@ -108,6 +108,13 @@ class Dummy extends Backend implements \OCP\IUserBackend {
|
|||
}
|
||||
}
|
||||
|
||||
public function loginName2UserName($loginName) {
|
||||
if(isset($this->users[strtolower($loginName)])) {
|
||||
return strtolower($loginName);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of all users
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue