diff --git a/apps/files_sharing/lib/external/manager.php b/apps/files_sharing/lib/external/manager.php index 968edba089..35dcabbe50 100644 --- a/apps/files_sharing/lib/external/manager.php +++ b/apps/files_sharing/lib/external/manager.php @@ -199,7 +199,7 @@ class Manager { $data['manager'] = $this; $mountPoint = '/' . $this->uid . '/files' . $data['mountpoint']; $data['mountpoint'] = $mountPoint; - $data['certificateManager'] = \OC::$server->getCertificateManager(\OC::$server->getUserSession()->getUser()); + $data['certificateManager'] = \OC::$server->getCertificateManager($this->uid); $mount = new Mount(self::STORAGE, $mountPoint, $data, $this, $this->storageLoader); $this->mountManager->addMount($mount); return $mount; diff --git a/apps/files_sharing/lib/hooks.php b/apps/files_sharing/lib/hooks.php index 6f23c103b1..10e16be4a9 100644 --- a/apps/files_sharing/lib/hooks.php +++ b/apps/files_sharing/lib/hooks.php @@ -30,8 +30,8 @@ class Hooks { \OC::$server->getDatabaseConnection(), \OC\Files\Filesystem::getMountManager(), \OC\Files\Filesystem::getLoader(), - \OC::$server->getUserSession(), - \OC::$server->getHTTPHelper()); + \OC::$server->getHTTPHelper(), + $params['uid']); $manager->removeUserShares($params['uid']); } diff --git a/apps/files_sharing/tests/server2server.php b/apps/files_sharing/tests/server2server.php index 2d59f7be9c..6e9c0dd0dd 100644 --- a/apps/files_sharing/tests/server2server.php +++ b/apps/files_sharing/tests/server2server.php @@ -153,8 +153,9 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase { \OC::$server->getDatabaseConnection(), \OC\Files\Filesystem::getMountManager(), \OC\Files\Filesystem::getLoader(), - \OC::$server->getUserSession(), - \OC::$server->getHTTPHelper()); + \OC::$server->getHTTPHelper(), + $toDelete + ); $manager->removeUserShares($toDelete); diff --git a/lib/private/security/certificatemanager.php b/lib/private/security/certificatemanager.php index 4a8ea17073..0744546177 100644 --- a/lib/private/security/certificatemanager.php +++ b/lib/private/security/certificatemanager.php @@ -16,15 +16,15 @@ use OCP\ICertificateManager; */ class CertificateManager implements ICertificateManager { /** - * @var \OCP\IUser + * @var string */ - protected $user; + protected $uid; /** - * @param \OCP\IUser $user + * @param string $uid */ - public function __construct($user) { - $this->user = $user; + public function __construct($uid) { + $this->uid = $uid; } /** @@ -134,7 +134,7 @@ class CertificateManager implements ICertificateManager { } private function getPathToCertificates() { - $path = $this->user ? $this->user->getHome() . '/files_external/' : '/files_external/'; + $path = is_null($this->uid) ? '/files_external/' : '/' . $this->uid . '/files_external/'; return $path; } diff --git a/lib/private/server.php b/lib/private/server.php index c98f77c647..672245c352 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -249,7 +249,9 @@ class Server extends SimpleContainer implements IServerContainer { }); $this->registerService('HTTPHelper', function (Server $c) { $config = $c->getConfig(); - return new HTTPHelper($config, new \OC\Security\CertificateManager($c->getUserSession()->getUser())); + $user = $c->getUserSession()->getUser(); + $uid = $user ? $user->getUID() : null; + return new HTTPHelper($config, new \OC\Security\CertificateManager($uid)); }); $this->registerService('EventLogger', function (Server $c) { if (defined('DEBUG') and DEBUG) { @@ -631,18 +633,19 @@ class Server extends SimpleContainer implements IServerContainer { /** * Get the certificate manager for the user * - * @param \OCP\IUser $user (optional) if not specified the current loggedin user is used + * @param string $uid (optional) if not specified the current loggedin user is used * @return \OCP\ICertificateManager */ - function getCertificateManager($user = null) { - if (is_null($user)) { + function getCertificateManager($uid = null) { + if (is_null($uid)) { $userSession = $this->getUserSession(); $user = $userSession->getUser(); if (is_null($user)) { return null; } + $uid = $user->getUID(); } - return new CertificateManager($user); + return new CertificateManager($uid); } /** diff --git a/tests/lib/security/certificatemanager.php b/tests/lib/security/certificatemanager.php index cff6932b67..83980a6755 100644 --- a/tests/lib/security/certificatemanager.php +++ b/tests/lib/security/certificatemanager.php @@ -28,9 +28,7 @@ class CertificateManagerTest extends \Test\TestCase { \OC\Files\Filesystem::tearDown(); \OC_Util::setupFS($this->username); - $this->user = \OC::$server->getUserManager()->get($this->username); - - $this->certificateManager = new CertificateManager($this->user); + $this->certificateManager = new CertificateManager($this->username); } protected function tearDown() { @@ -84,7 +82,7 @@ class CertificateManagerTest extends \Test\TestCase { } function testGetCertificateBundle() { - $this->assertSame($this->user->getHome().'/files_external/rootcerts.crt', $this->certificateManager->getCertificateBundle()); + $this->assertSame('/' . $this->username . '/files_external/rootcerts.crt', $this->certificateManager->getCertificateBundle()); } } \ No newline at end of file