setup for current user when finding mounts in the roottags/v24.0.0beta1
@@ -48,6 +48,7 @@ use OCP\Files\Mount\IMountPoint; | |||
use OCP\Files\Storage\IStorage; | |||
use OCP\IUser; | |||
use OCP\IUserManager; | |||
use OCP\IUserSession; | |||
use OCP\Lockdown\ILockdownManager; | |||
class SetupManager { | |||
@@ -60,6 +61,7 @@ class SetupManager { | |||
private IEventDispatcher $eventDispatcher; | |||
private IUserMountCache $userMountCache; | |||
private ILockdownManager $lockdownManager; | |||
private IUserSession $userSession; | |||
private bool $listeningForProviders; | |||
public function __construct( | |||
@@ -69,7 +71,8 @@ class SetupManager { | |||
IUserManager $userManager, | |||
IEventDispatcher $eventDispatcher, | |||
IUserMountCache $userMountCache, | |||
ILockdownManager $lockdownManager | |||
ILockdownManager $lockdownManager, | |||
IUserSession $userSession | |||
) { | |||
$this->eventLogger = $eventLogger; | |||
$this->mountProviderCollection = $mountProviderCollection; | |||
@@ -78,6 +81,7 @@ class SetupManager { | |||
$this->eventDispatcher = $eventDispatcher; | |||
$this->userMountCache = $userMountCache; | |||
$this->lockdownManager = $lockdownManager; | |||
$this->userSession = $userSession; | |||
$this->listeningForProviders = false; | |||
} | |||
@@ -239,7 +243,14 @@ class SetupManager { | |||
* Set up the filesystem for the specified path | |||
*/ | |||
public function setupForPath(string $path): void { | |||
if (substr_count($path, '/') < 2 || strpos($path, '/appdata_' . \OC_Util::getInstanceId()) === 0 || strpos($path, '/files_external/') === 0) { | |||
if (substr_count($path, '/') < 2) { | |||
if ($user = $this->userSession->getUser()) { | |||
$this->setupForUser($user); | |||
} else { | |||
$this->setupRoot(); | |||
} | |||
return; | |||
} elseif (strpos($path, '/appdata_' . \OC_Util::getInstanceId()) === 0 || strpos($path, '/files_external/') === 0) { | |||
$this->setupRoot(); | |||
return; | |||
} else { |
@@ -29,6 +29,7 @@ use OCP\Files\Config\IMountProviderCollection; | |||
use OCP\Files\Config\IUserMountCache; | |||
use OCP\Files\Mount\IMountManager; | |||
use OCP\IUserManager; | |||
use OCP\IUserSession; | |||
use OCP\Lockdown\ILockdownManager; | |||
class SetupManagerFactory { | |||
@@ -38,6 +39,7 @@ class SetupManagerFactory { | |||
private IEventDispatcher $eventDispatcher; | |||
private IUserMountCache $userMountCache; | |||
private ILockdownManager $lockdownManager; | |||
private IUserSession $userSession; | |||
private ?SetupManager $setupManager; | |||
public function __construct( | |||
@@ -46,7 +48,8 @@ class SetupManagerFactory { | |||
IUserManager $userManager, | |||
IEventDispatcher $eventDispatcher, | |||
IUserMountCache $userMountCache, | |||
ILockdownManager $lockdownManager | |||
ILockdownManager $lockdownManager, | |||
IUserSession $userSession | |||
) { | |||
$this->eventLogger = $eventLogger; | |||
$this->mountProviderCollection = $mountProviderCollection; | |||
@@ -54,12 +57,22 @@ class SetupManagerFactory { | |||
$this->eventDispatcher = $eventDispatcher; | |||
$this->userMountCache = $userMountCache; | |||
$this->lockdownManager = $lockdownManager; | |||
$this->userSession = $userSession; | |||
$this->setupManager = null; | |||
} | |||
public function create(IMountManager $mountManager): SetupManager { | |||
if (!$this->setupManager) { | |||
$this->setupManager = new SetupManager($this->eventLogger, $this->mountProviderCollection, $mountManager, $this->userManager, $this->eventDispatcher, $this->userMountCache, $this->lockdownManager); | |||
$this->setupManager = new SetupManager( | |||
$this->eventLogger, | |||
$this->mountProviderCollection, | |||
$mountManager, | |||
$this->userManager, | |||
$this->eventDispatcher, | |||
$this->userMountCache, | |||
$this->lockdownManager, | |||
$this->userSession, | |||
); | |||
} | |||
return $this->setupManager; | |||
} |