]> source.dussan.org Git - nextcloud-server.git/commitdiff
throw exception when backends don't provide a user instead of creating legacy local...
authorJörn Friedrich Dreyer <jfd@butonic.de>
Thu, 2 Apr 2015 09:05:14 +0000 (11:05 +0200)
committerJörn Friedrich Dreyer <jfd@butonic.de>
Fri, 10 Apr 2015 07:12:37 +0000 (09:12 +0200)
lib/private/files/filesystem.php
lib/private/user/nouserexception.php [new file with mode: 0644]

index 95e630b77655a12c6c37f3232a0a06ec5da19574..10c64e1301aeff86e6c448dcef2bd5a842d16c5a 100644 (file)
@@ -373,42 +373,42 @@ class Filesystem {
 
                $userObject = \OC_User::getManager()->get($user);
 
-               if (!is_null($userObject)) {
-                       $homeStorage = \OC_Config::getValue( 'objectstore' );
-                       if (!empty($homeStorage)) {
-                               // sanity checks
-                               if (empty($homeStorage['class'])) {
-                                       \OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR);
-                               }
-                               if (!isset($homeStorage['arguments'])) {
-                                       $homeStorage['arguments'] = array();
-                               }
-                               // instantiate object store implementation
-                               $homeStorage['arguments']['objectstore'] = new $homeStorage['class']($homeStorage['arguments']);
-                               // mount with home object store implementation
-                               $homeStorage['class'] = '\OC\Files\ObjectStore\HomeObjectStoreStorage';
-                       } else {
-                               $homeStorage = array(
-                                       //default home storage configuration:
-                                       'class' => '\OC\Files\Storage\Home',
-                                       'arguments' => array()
-                               );
-                       }
-                       $homeStorage['arguments']['user'] = $userObject;
+               if (is_null($userObject)) {
+                       \OCP\Util::writeLog('files', ' Backends provided no user object for '.$user, \OCP\Util::ERROR);
+                       throw new \OC\User\NoUserException();
+               }
 
-                       // check for legacy home id (<= 5.0.12)
-                       if (\OC\Files\Cache\Storage::exists('local::' . $root . '/')) {
-                               $homeStorage['arguments']['legacy'] = true;
+               $homeStorage = \OC_Config::getValue( 'objectstore' );
+               if (!empty($homeStorage)) {
+                       // sanity checks
+                       if (empty($homeStorage['class'])) {
+                               \OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR);
                        }
-
-                       self::mount($homeStorage['class'], $homeStorage['arguments'], $user);
-
-                       $home = \OC\Files\Filesystem::getStorage($user);
+                       if (!isset($homeStorage['arguments'])) {
+                               $homeStorage['arguments'] = array();
+                       }
+                       // instantiate object store implementation
+                       $homeStorage['arguments']['objectstore'] = new $homeStorage['class']($homeStorage['arguments']);
+                       // mount with home object store implementation
+                       $homeStorage['class'] = '\OC\Files\ObjectStore\HomeObjectStoreStorage';
+               } else {
+                       $homeStorage = array(
+                               //default home storage configuration:
+                               'class' => '\OC\Files\Storage\Home',
+                               'arguments' => array()
+                       );
                }
-               else {
-                       self::mount('\OC\Files\Storage\Local', array('datadir' => $root), $user);
+               $homeStorage['arguments']['user'] = $userObject;
+
+               // check for legacy home id (<= 5.0.12)
+               if (\OC\Files\Cache\Storage::exists('local::' . $root . '/')) {
+                       $homeStorage['arguments']['legacy'] = true;
                }
 
+               self::mount($homeStorage['class'], $homeStorage['arguments'], $user);
+
+               $home = \OC\Files\Filesystem::getStorage($user);
+
                self::mountCacheDir($user);
 
                // Chance to mount for other storages
diff --git a/lib/private/user/nouserexception.php b/lib/private/user/nouserexception.php
new file mode 100644 (file)
index 0000000..9452362
--- /dev/null
@@ -0,0 +1,14 @@
+<?php
+/**
+ * ownCloud
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING-AGPL file.
+ *
+ * @author Jörn Friedrich Dreyer <jfd@owncloud.com>
+ * @copyright Jörn Friedrich Dreyer 2015
+ */
+
+namespace OC\User;
+
+class NoUserException extends \Exception {}
\ No newline at end of file