mirror of
https://github.com/nextcloud/server.git
synced 2026-03-25 11:54:59 -04:00
setup for current user when finding mounts in the root
Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
parent
bf48c0b1b4
commit
577b1fa856
2 changed files with 28 additions and 4 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue