Merge pull request #26862 from nextcloud/backport/26149/stable20

[stable20] Only perform login check during ownership transfer for encryption
This commit is contained in:
blizzz 2021-05-03 15:02:16 +02:00 committed by GitHub
commit eca4717ca1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 2 deletions

View File

@ -101,12 +101,15 @@ class OwnershipTransferService {
$destinationUid = $destinationUser->getUID(); $destinationUid = $destinationUser->getUID();
$sourcePath = rtrim($sourceUid . '/files/' . $path, '/'); $sourcePath = rtrim($sourceUid . '/files/' . $path, '/');
// target user has to be ready // If encryption is on we have to ensure the user has logged in before and that all encryption modules are ready
if ($destinationUser->getLastLogin() === 0 || !$this->encryptionManager->isReadyForUser($destinationUid)) { if (($this->encryptionManager->isEnabled() && $destinationUser->getLastLogin() === 0)
|| !$this->encryptionManager->isReadyForUser($destinationUid)) {
throw new TransferOwnershipException("The target user is not ready to accept files. The user has at least to have logged in once.", 2); throw new TransferOwnershipException("The target user is not ready to accept files. The user has at least to have logged in once.", 2);
} }
// setup filesystem // setup filesystem
// Requesting the user folder will set it up if the user hasn't logged in before
\OC::$server->getUserFolder($destinationUser->getUID());
Filesystem::initMountPoints($sourceUid); Filesystem::initMountPoints($sourceUid);
Filesystem::initMountPoints($destinationUid); Filesystem::initMountPoints($destinationUid);