From f27e98a3e28e3697f6eaf3521cbbe754318f9ba5 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 10 Dec 2015 16:40:27 +0100 Subject: [PATCH] Migrate files external for the user that the filesystem is being setup for --- .../lib/config/configadapter.php | 2 +- .../migration/dummyusersession.php | 51 +++++++++++++++++++ .../migration/storagemigrator.php | 21 ++++---- 3 files changed, 61 insertions(+), 13 deletions(-) create mode 100644 apps/files_external/migration/dummyusersession.php diff --git a/apps/files_external/lib/config/configadapter.php b/apps/files_external/lib/config/configadapter.php index 4e37e6a400..4f68c3c7fd 100644 --- a/apps/files_external/lib/config/configadapter.php +++ b/apps/files_external/lib/config/configadapter.php @@ -114,7 +114,7 @@ class ConfigAdapter implements IMountProvider { * @return \OCP\Files\Mount\IMountPoint[] */ public function getMountsForUser(IUser $user, IStorageFactory $loader) { - $this->migrator->migrateUser(); + $this->migrator->migrateUser($user); $mounts = []; diff --git a/apps/files_external/migration/dummyusersession.php b/apps/files_external/migration/dummyusersession.php new file mode 100644 index 0000000000..9ffbfd6309 --- /dev/null +++ b/apps/files_external/migration/dummyusersession.php @@ -0,0 +1,51 @@ + + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see + * + */ + +namespace OCA\Files_external\Migration; + +use OCP\IUser; +use OCP\IUserSession; + +class DummyUserSession implements IUserSession { + + /** + * @var IUser + */ + private $user; + + public function login($user, $password) { + } + + public function logout() { + } + + public function setUser($user) { + $this->user = $user; + } + + public function getUser() { + return $this->user; + } + + public function isLoggedIn() { + return !is_null($this->user); + } +} diff --git a/apps/files_external/migration/storagemigrator.php b/apps/files_external/migration/storagemigrator.php index c8e323121e..b469205ac5 100644 --- a/apps/files_external/migration/storagemigrator.php +++ b/apps/files_external/migration/storagemigrator.php @@ -32,6 +32,7 @@ use OCA\Files_external\Service\UserStoragesService; use OCP\IConfig; use OCP\IDBConnection; use OCP\ILogger; +use OCP\IUser; use OCP\IUserSession; /** @@ -48,11 +49,6 @@ class StorageMigrator { */ private $dbConfig; - /** - * @var IUserSession - */ - private $userSession; - /** * @var IConfig */ @@ -73,7 +69,6 @@ class StorageMigrator { * * @param BackendService $backendService * @param DBConfigService $dbConfig - * @param IUserSession $userSession * @param IConfig $config * @param IDBConnection $connection * @param ILogger $logger @@ -81,14 +76,12 @@ class StorageMigrator { public function __construct( BackendService $backendService, DBConfigService $dbConfig, - IUserSession $userSession, IConfig $config, IDBConnection $connection, ILogger $logger ) { $this->backendService = $backendService; $this->dbConfig = $dbConfig; - $this->userSession = $userSession; $this->config = $config; $this->connection = $connection; $this->logger = $logger; @@ -121,14 +114,18 @@ class StorageMigrator { /** * Migrate personal storages configured by the current user + * + * @param IUser $user */ - public function migrateUser() { - $userId = $this->userSession->getUser()->getUID(); + public function migrateUser(IUser $user) { + $dummySession = new DummyUserSession(); + $dummySession->setUser($user); + $userId = $user->getUID(); $userVersion = $this->config->getUserValue($userId, 'files_external', 'config_version', '0.0.0'); if (version_compare($userVersion, '0.5.0', '<')) { $this->config->setUserValue($userId, 'files_external', 'config_version', '0.5.0'); - $legacyService = new UserLegacyStoragesService($this->backendService, $this->userSession); - $storageService = new UserStoragesService($this->backendService, $this->dbConfig, $this->userSession); + $legacyService = new UserLegacyStoragesService($this->backendService, $dummySession); + $storageService = new UserStoragesService($this->backendService, $this->dbConfig, $dummySession); $this->migrate($legacyService, $storageService); }