Browse Source

throw exception when backends don't provide a user instead of creating legacy local storages

tags/v8.1.0alpha1
Jörn Friedrich Dreyer 9 years ago
parent
commit
b069f33a72
2 changed files with 45 additions and 31 deletions
  1. 31
    31
      lib/private/files/filesystem.php
  2. 14
    0
      lib/private/user/nouserexception.php

+ 31
- 31
lib/private/files/filesystem.php View 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

+ 14
- 0
lib/private/user/nouserexception.php View File

@@ -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 {}

Loading…
Cancel
Save