aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Files/SetupManager.php
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2022-03-02 17:11:06 +0100
committerRobin Appelman <robin@icewind.nl>2022-03-04 16:30:03 +0100
commit22875bf367b69db4a76daed1a057407e7fbff2a6 (patch)
treeabcf81d9b06f48ced2c822ac90b849c525e733b6 /lib/private/Files/SetupManager.php
parent1c468129afa2b2ec4a370a879f8eaffd22768baf (diff)
downloadnextcloud-server-22875bf367b69db4a76daed1a057407e7fbff2a6.tar.gz
nextcloud-server-22875bf367b69db4a76daed1a057407e7fbff2a6.zip
move logic to decide what to setup to setupmanager
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/private/Files/SetupManager.php')
-rw-r--r--lib/private/Files/SetupManager.php48
1 files changed, 33 insertions, 15 deletions
diff --git a/lib/private/Files/SetupManager.php b/lib/private/Files/SetupManager.php
index 578372775ac..79622132208 100644
--- a/lib/private/Files/SetupManager.php
+++ b/lib/private/Files/SetupManager.php
@@ -43,14 +43,14 @@ use OCP\Files\Mount\IMountManager;
use OCP\Files\Mount\IMountPoint;
use OCP\Files\Storage\IStorage;
use OCP\IUser;
-use OCP\IUserSession;
+use OCP\IUserManager;
class SetupManager {
private bool $rootSetup = false;
private IEventLogger $eventLogger;
private IMountProviderCollection $mountProviderCollection;
private IMountManager $mountManager;
- private IUserSession $userSession;
+ private IUserManager $userManager;
private array $setupUsers = [];
private IEventDispatcher $eventDispatcher;
@@ -58,13 +58,13 @@ class SetupManager {
IEventLogger $eventLogger,
IMountProviderCollection $mountProviderCollection,
IMountManager $mountManager,
- IUserSession $userSession,
+ IUserManager $userManager,
IEventDispatcher $eventDispatcher
) {
$this->eventLogger = $eventLogger;
$this->mountProviderCollection = $mountProviderCollection;
$this->mountManager = $mountManager;
- $this->userSession = $userSession;
+ $this->userManager = $userManager;
$this->eventDispatcher = $eventDispatcher;
}
@@ -138,16 +138,10 @@ class SetupManager {
});
}
- public function setupForCurrentUser() {
- $user = $this->userSession->getUser();
- if ($user) {
- $this->setupForUser($user);
- } else {
- $this->setupRoot();
- }
- }
-
- public function setupForUser(IUser $user) {
+ /**
+ * Setup the full filesystem for the specified user
+ */
+ public function setupForUser(IUser $user): void {
$this->setupRoot();
if (in_array($user->getUID(), $this->setupUsers, true)) {
@@ -172,7 +166,10 @@ class SetupManager {
$this->eventLogger->end('setup_fs');
}
- public function setupRoot() {
+ /**
+ * Set up the root filesystem
+ */
+ public function setupRoot(): void {
//setting up the filesystem twice can only lead to trouble
if ($this->rootSetup) {
return;
@@ -197,6 +194,27 @@ class SetupManager {
$this->eventLogger->end('setup_root_fs');
}
+ /**
+ * 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) {
+ $this->setupRoot();
+ return;
+ } else {
+ [, $userId] = explode('/', $path);
+ }
+
+ $user = $this->userManager->get($userId);
+
+ if (!$user) {
+ $this->setupRoot();
+ return;
+ }
+
+ $this->setupForUser($user);
+ }
+
public function tearDown() {
$this->setupUsers = [];
$this->rootSetup = false;