Skip to content

Commit

Permalink
Merge pull request #46124 from nextcloud/fix/ownership-transfer-sourc…
Browse files Browse the repository at this point in the history
…e-user-files

fix: Fix "Unknown path" error when source user `files` folder has not been initialized
  • Loading branch information
Pytal authored Oct 16, 2024
2 parents 923ce7b + 7ba52ea commit 94692cd
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions apps/files/lib/Service/OwnershipTransferService.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public function __construct(
private IUserMountCache $userMountCache,
private IUserManager $userManager,
private IFactory $l10nFactory,
private IRootFolder $rootFolder,
) {
$this->encryptionManager = $encryptionManager;
}
Expand Down Expand Up @@ -88,8 +89,10 @@ public function transfer(
// Requesting the user folder will set it up if the user hasn't logged in before
// We need a setupFS for the full filesystem setup before as otherwise we will just return
// a lazy root folder which does not create the destination users folder
\OC_Util::setupFS($sourceUser->getUID());
\OC_Util::setupFS($destinationUser->getUID());
\OC::$server->getUserFolder($destinationUser->getUID());
$this->rootFolder->getUserFolder($sourceUser->getUID());
$this->rootFolder->getUserFolder($destinationUser->getUID());
Filesystem::initMountPoints($sourceUid);
Filesystem::initMountPoints($destinationUid);

Expand Down Expand Up @@ -419,7 +422,6 @@ private function restoreShares(
):void {
$output->writeln('Restoring shares ...');
$progress = new ProgressBar($output, count($shares));
$rootFolder = Server::get(IRootFolder::class);

foreach ($shares as ['share' => $share, 'suffix' => $suffix]) {
try {
Expand Down Expand Up @@ -459,7 +461,7 @@ private function restoreShares(
} catch (NotFoundException) {
// ID has changed due to transfer between different storages
// Try to get the new ID from the target path and suffix of the share
$node = $rootFolder->get(Filesystem::normalizePath($targetLocation . '/' . $suffix));
$node = $this->rootFolder->get(Filesystem::normalizePath($targetLocation . '/' . $suffix));
$newNodeId = $node->getId();
$output->writeln('Had to change node id to ' . $newNodeId, OutputInterface::VERBOSITY_VERY_VERBOSE);
}
Expand Down

0 comments on commit 94692cd

Please sign in to comment.