From 30c44e1d24eadddd0eb6b4bc090933e2ee4c95a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Thu, 25 Jul 2019 09:31:39 +0200 Subject: [PATCH] Provide proper user context from initMountPoints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/files_external/lib/Config/ConfigAdapter.php | 2 +- apps/files_external/lib/Config/UserContext.php | 8 ++++++++ apps/files_external/lib/config.php | 10 +++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/files_external/lib/Config/ConfigAdapter.php b/apps/files_external/lib/Config/ConfigAdapter.php index 8d9c7ea8d1..c9586635ba 100644 --- a/apps/files_external/lib/Config/ConfigAdapter.php +++ b/apps/files_external/lib/Config/ConfigAdapter.php @@ -76,7 +76,7 @@ class ConfigAdapter implements IMountProvider { */ private function prepareStorageConfig(StorageConfig &$storage, IUser $user) { foreach ($storage->getBackendOptions() as $option => $value) { - $storage->setBackendOption($option, \OC_Mount_Config::substitutePlaceholdersInConfig($value)); + $storage->setBackendOption($option, \OC_Mount_Config::substitutePlaceholdersInConfig($value, $user->getUID())); } $objectStore = $storage->getBackendOption('objectstore'); diff --git a/apps/files_external/lib/Config/UserContext.php b/apps/files_external/lib/Config/UserContext.php index 8fdca68f9b..bec762358f 100644 --- a/apps/files_external/lib/Config/UserContext.php +++ b/apps/files_external/lib/Config/UserContext.php @@ -39,6 +39,8 @@ class UserContext { /** @var IRequest */ private $request; + private $user; + public function __construct(IUserSession $session, ShareManager $manager, IRequest $request) { $this->session = $session; $this->shareManager = $manager; @@ -49,8 +51,14 @@ class UserContext { return $this->session; } + public function setUser($user): void { + $this->user = $user; + } protected function getUserId(): ?string { + if ($this->user !== null) { + return $this->user; + } if($this->session && $this->session->getUser() !== null) { return $this->session->getUser()->getUID(); } diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index cc417a837f..75ed59418d 100644 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -50,6 +50,7 @@ use OCA\Files_External\Service\UserGlobalStoragesService; use OCP\IUserManager; use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Service\UserStoragesService; +use OCA\Files_External\Config\UserContext; /** * Class to configure mount.json globally and for users @@ -107,7 +108,7 @@ class OC_Mount_Config { $mountPoint = '/'.$uid.'/files'.$storage->getMountPoint(); $mountEntry = self::prepareMountPointEntry($storage, false); foreach ($mountEntry['options'] as &$option) { - $option = self::substitutePlaceholdersInConfig($option); + $option = self::substitutePlaceholdersInConfig($option, $uid); } $mountPoints[$mountPoint] = $mountEntry; } @@ -116,7 +117,7 @@ class OC_Mount_Config { $mountPoint = '/'.$uid.'/files'.$storage->getMountPoint(); $mountEntry = self::prepareMountPointEntry($storage, true); foreach ($mountEntry['options'] as &$option) { - $option = self::substitutePlaceholdersInConfig($uid, $option); + $option = self::substitutePlaceholdersInConfig($option, $uid); } $mountPoints[$mountPoint] = $mountEntry; } @@ -215,12 +216,15 @@ class OC_Mount_Config { * @throws \OCP\AppFramework\QueryException * @since 16.0.0 */ - public static function substitutePlaceholdersInConfig($input) { + public static function substitutePlaceholdersInConfig($input, $user = null) { /** @var BackendService $backendService */ $backendService = self::$app->getContainer()->query(BackendService::class); /** @var IConfigHandler[] $handlers */ $handlers = $backendService->getConfigHandlers(); foreach ($handlers as $handler) { + if ($handler instanceof UserContext) { + $handler->setUser($user); + } $input = $handler->handle($input); } return $input;