diff options
author | Jörn Friedrich Dreyer <jfd@butonic.de> | 2015-04-02 11:05:14 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-04-22 23:40:36 +0200 |
commit | 8939d1307f4717fde6348c61cf72dcb4ac84829e (patch) | |
tree | 3c0ca697d3d479250dc5b5945cb15cb62769e62d | |
parent | 2eced9ea99413388129b3417ac2b9e0161734b9b (diff) | |
download | nextcloud-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.php | 62 | ||||
-rw-r--r-- | lib/private/user/nouserexception.php | 14 |
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 |