]> source.dussan.org Git - nextcloud-server.git/commitdiff
Migrate files external for the user that the filesystem is being setup for
authorRobin Appelman <icewind@owncloud.com>
Thu, 10 Dec 2015 15:40:27 +0000 (16:40 +0100)
committerRobin Appelman <icewind@owncloud.com>
Mon, 14 Dec 2015 12:38:54 +0000 (13:38 +0100)
apps/files_external/lib/config/configadapter.php
apps/files_external/migration/dummyusersession.php [new file with mode: 0644]
apps/files_external/migration/storagemigrator.php

index 4e37e6a4004e072a65c1c1d26491df68efafea8d..4f68c3c7fde73fdf312ae21fbcc7dbba5721be6b 100644 (file)
@@ -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 (file)
index 0000000..9ffbfd6
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @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 <http://www.gnu.org/licenses/>
+ *
+ */
+
+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);
+       }
+}
index c8e323121ea7c51a0feab529e96a5599d61db71f..b469205ac5535f57da32a83ecd86120ebc5fee94 100644 (file)
@@ -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);
                }