diff --git a/apps/files/command/transferownership.php b/apps/files/command/transferownership.php index d3994bbdf9f58..96ed8fbbb8465 100644 --- a/apps/files/command/transferownership.php +++ b/apps/files/command/transferownership.php @@ -28,6 +28,7 @@ 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 @@ protected function configure() { 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("Unknown source user $this->sourceUser"); return; } - if (!$this->userManager->userExists($this->destinationUser)) { + if (!$destination instanceof IUser) { $output->writeln("Unknown destination user $this->destinationUser"); return; } - + + $this->sourceUser = $source->getUID(); + $this->destinationUser = $destination->getUID(); + // target user has to be ready if (!\OC::$server->getEncryptionManager()->isReadyForUser($this->destinationUser)) { $output->writeln("The target user is not ready to accept files. The user has at least to be logged in once."); diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php index eb86873a26f2b..e638823ad297a 100644 --- a/lib/private/user/manager.php +++ b/lib/private/user/manager.php @@ -155,6 +155,16 @@ protected function getUserObject($uid, $backend, $cacheUser = true) { 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;