diff --git a/apps/files_external/lib/Service/MountCacheService.php b/apps/files_external/lib/Service/MountCacheService.php index 2be17b9d598..119b7b6f8b6 100644 --- a/apps/files_external/lib/Service/MountCacheService.php +++ b/apps/files_external/lib/Service/MountCacheService.php @@ -75,7 +75,7 @@ class MountCacheService implements IEventListener { public function handleDeletedStorage(StorageConfig $storage): void { foreach ($this->applicableHelper->getUsersForStorage($storage) as $user) { - $this->userMountCache->removeMount($storage->getMountPointForUser($user)); + $this->userMountCache->removeMount($storage->getMountPointForUser($user), $user); } } @@ -87,7 +87,7 @@ class MountCacheService implements IEventListener { public function handleUpdatedStorage(StorageConfig $oldStorage, StorageConfig $newStorage): void { foreach ($this->applicableHelper->diffApplicable($oldStorage, $newStorage) as $user) { - $this->userMountCache->removeMount($oldStorage->getMountPointForUser($user)); + $this->userMountCache->removeMount($oldStorage->getMountPointForUser($user), $user); } foreach ($this->applicableHelper->diffApplicable($newStorage, $oldStorage) as $user) { $this->registerForUser($user, $newStorage); @@ -156,7 +156,7 @@ class MountCacheService implements IEventListener { $storages = $this->storagesService->getAllStoragesForGroup($group); foreach ($storages as $storage) { if (!$this->applicableHelper->isApplicableForUser($storage, $user)) { - $this->userMountCache->removeMount($storage->getMountPointForUser($user)); + $this->userMountCache->removeMount($storage->getMountPointForUser($user), $user); } } } @@ -181,7 +181,7 @@ class MountCacheService implements IEventListener { private function removeGroupFromStorage(StorageConfig $storage, IGroup $group): void { foreach ($group->searchUsers('') as $user) { if (!$this->applicableHelper->isApplicableForUser($storage, $user)) { - $this->userMountCache->removeMount($storage->getMountPointForUser($user)); + $this->userMountCache->removeMount($storage->getMountPointForUser($user), $user); } } } diff --git a/apps/files_sharing/lib/ShareRecipientUpdater.php b/apps/files_sharing/lib/ShareRecipientUpdater.php index 62033b7dd0a..4b410f97cbd 100644 --- a/apps/files_sharing/lib/ShareRecipientUpdater.php +++ b/apps/files_sharing/lib/ShareRecipientUpdater.php @@ -85,7 +85,7 @@ class ShareRecipientUpdater { * Process a single deleted share for a user */ public function updateForDeletedShare(IUser $user, IShare $share): void { - $this->userMountCache->removeMount($this->getMountPointFromTarget($user, $share->getTarget())); + $this->userMountCache->removeMount($this->getMountPointFromTarget($user, $share->getTarget()), $user); } /** @@ -96,7 +96,7 @@ class ShareRecipientUpdater { if ($originalTarget != null) { $newMountPoint = $this->getMountPointFromTarget($user, $share->getTarget()); $oldMountPoint = $this->getMountPointFromTarget($user, $originalTarget); - $this->userMountCache->removeMount($oldMountPoint); + $this->userMountCache->removeMount($oldMountPoint, $user); $this->userMountCache->addMount($user, $newMountPoint, $share->getNode()->getData(), MountProvider::class); } else { $this->updateForUser($user); diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index 3225afd2bc4..2d20b821c51 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -520,10 +520,13 @@ class UserMountCache implements IUserMountCache { return $result; } - public function removeMount(string $mountPoint): void { + public function removeMount(string $mountPoint, ?IUser $user = null): void { $query = $this->connection->getQueryBuilder(); $query->delete('mounts') ->where($query->expr()->eq('mount_point_hash', $query->createNamedParameter(hash('xxh128', $mountPoint)))); + if ($user) { + $query->andWhere($query->expr()->eq('user_id', $query->createNamedParameter($user->getUID()))); + } $query->executeStatement(); $parts = explode('/', $mountPoint); diff --git a/lib/public/Files/Config/IUserMountCache.php b/lib/public/Files/Config/IUserMountCache.php index 6e4ca41cd28..d1541c7c4f5 100644 --- a/lib/public/Files/Config/IUserMountCache.php +++ b/lib/public/Files/Config/IUserMountCache.php @@ -139,7 +139,7 @@ interface IUserMountCache { * * @since 33.0.0 */ - public function removeMount(string $mountPoint): void; + public function removeMount(string $mountPoint, ?IUser $user = null): void; /** * Register a new mountpoint for a user