Provide proper user context from initMountPoints
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
72aaf2e5fb
commit
30c44e1d24
3 changed files with 16 additions and 4 deletions
|
@ -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');
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue