diff --git a/apps/testing/appinfo/app.php b/apps/testing/appinfo/app.php new file mode 100644 index 0000000000..402889f267 --- /dev/null +++ b/apps/testing/appinfo/app.php @@ -0,0 +1,23 @@ + + * + * @copyright Copyright (c) 2016, ownCloud GmbH. + * @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 + * + */ + +$app = new \OCA\Testing\Application(); + diff --git a/apps/testing/appinfo/info.xml b/apps/testing/appinfo/info.xml index 35ee3715b5..bd64fca212 100644 --- a/apps/testing/appinfo/info.xml +++ b/apps/testing/appinfo/info.xml @@ -9,4 +9,7 @@ + + prelogin + diff --git a/apps/testing/lib/AlternativeHomeUserBackend.php b/apps/testing/lib/AlternativeHomeUserBackend.php new file mode 100644 index 0000000000..1e86b0bc55 --- /dev/null +++ b/apps/testing/lib/AlternativeHomeUserBackend.php @@ -0,0 +1,56 @@ + + * + * @copyright Copyright (c) 2016, ownCloud GmbH. + * @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 + * + */ + +namespace OCA\Testing; + +/** + * Alternative home user backend. + * + * It returns a md5 of the home folder instead of the user id. + * To configure, need to add this in config.php: + * 'user_backends' => [ + * 'default' => false, [ + * 'class' => '\\OCA\\Testing\\AlternativeHomeUserBackend', + * 'arguments' => [], + * ], + * ] + */ +class AlternativeHomeUserBackend extends \OC\User\Database { + public function __construct() { + parent::__construct(); + } + /** + * get the user's home directory + * @param string $uid the username + * @return string|false + */ + public function getHome($uid) { + if ($this->userExists($uid)) { + // workaround to avoid killing the admin + if ($uid !== 'admin') { + $uid = md5($uid); + } + return \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/' . $uid; + } + + return false; + } +} diff --git a/apps/testing/lib/Application.php b/apps/testing/lib/Application.php new file mode 100644 index 0000000000..19eda60acb --- /dev/null +++ b/apps/testing/lib/Application.php @@ -0,0 +1,30 @@ + + * + * @copyright Copyright (c) 2016, ownCloud GmbH + * @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 + * + */ + +namespace OCA\Testing; + +use OCP\AppFramework\App; + +class Application extends App { + public function __construct (array $urlParams = array()) { + parent::__construct('testing', $urlParams); + } +} diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php index ed0d14a1ab..0a52be7565 100644 --- a/lib/private/legacy/user.php +++ b/lib/private/legacy/user.php @@ -125,9 +125,16 @@ class OC_User { * setup the configured backends in config.php */ public static function setupBackends() { - OC_App::loadApps(array('prelogin')); - $backends = \OC::$server->getSystemConfig()->getValue('user_backends', array()); + OC_App::loadApps(['prelogin']); + $backends = \OC::$server->getSystemConfig()->getValue('user_backends', []); + if (isset($backends['default']) && !$backends['default']) { + // clear default backends + self::clearBackends(); + } foreach ($backends as $i => $config) { + if (!is_array($config)) { + continue; + } $class = $config['class']; $arguments = $config['arguments']; if (class_exists($class)) {