summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörn Friedrich Dreyer <jfd@butonic.de>2015-04-02 11:05:14 +0200
committerMorris Jobke <hey@morrisjobke.de>2015-04-22 23:40:36 +0200
commit8939d1307f4717fde6348c61cf72dcb4ac84829e (patch)
tree3c0ca697d3d479250dc5b5945cb15cb62769e62d
parent2eced9ea99413388129b3417ac2b9e0161734b9b (diff)
downloadnextcloud-server-8939d1307f4717fde6348c61cf72dcb4ac84829e.tar.gz
nextcloud-server-8939d1307f4717fde6348c61cf72dcb4ac84829e.zip
throw exception when backends don't provide a user instead of creating legacy local storages
-rw-r--r--lib/private/files/filesystem.php62
-rw-r--r--lib/private/user/nouserexception.php14
2 files changed, 45 insertions, 31 deletions
diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php
index e933782ce2f..707440632f2 100644
--- a/lib/private/files/filesystem.php
+++ b/lib/private/files/filesystem.php
@@ -342,42 +342,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
index 00000000000..9452362b4e6
--- /dev/null
+++ b/lib/private/user/nouserexception.php
@@ -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