Provide proper user context from initMountPoints

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl 2019-07-25 09:31:39 +02:00
parent 72aaf2e5fb
commit 30c44e1d24
No known key found for this signature in database
GPG key ID: 4C614C6ED2CDE6DF
3 changed files with 16 additions and 4 deletions

View file

@ -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');

View file

@ -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();
}

View file

@ -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;