Merge pull request #1770 from nextcloud/backport-1766-force-uid-casing-on-transfer-ownership-9

[stable9] Make sure the UID is correctly cased
This commit is contained in:
Roeland Jago Douma 2016-10-24 11:36:02 +02:00 committed by GitHub
commit eb47c20bdc
2 changed files with 20 additions and 3 deletions

View File

@ -28,6 +28,7 @@ use OC\Files\Filesystem;
use OC\Files\View;
use OCP\Files\FileInfo;
use OCP\Files\Mount\IMountManager;
use OCP\IUser;
use OCP\IUserManager;
use OCP\Share\IManager;
use OCP\Share\IShare;
@ -92,15 +93,21 @@ class TransferOwnership extends Command {
protected function execute(InputInterface $input, OutputInterface $output) {
$this->sourceUser = $input->getArgument('source-user');
$this->destinationUser = $input->getArgument('destination-user');
if (!$this->userManager->userExists($this->sourceUser)) {
$source = $this->userManager->get($this->sourceUser);
$destination = $this->userManager->get($this->destinationUser);
if (!$source instanceof IUser) {
$output->writeln("<error>Unknown source user $this->sourceUser</error>");
return;
}
if (!$this->userManager->userExists($this->destinationUser)) {
if (!$destination instanceof IUser) {
$output->writeln("<error>Unknown destination user $this->destinationUser</error>");
return;
}
$this->sourceUser = $source->getUID();
$this->destinationUser = $destination->getUID();
// target user has to be ready
if (!\OC::$server->getEncryptionManager()->isReadyForUser($this->destinationUser)) {
$output->writeln("<error>The target user is not ready to accept files. The user has at least to be logged in once.</error>");

View File

@ -155,6 +155,16 @@ 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;