Skip to content

Commit 5d669ab

Browse files
authored
Merge pull request #41749 from nextcloud/checkUserOwner
fix(files_versions): Check for user and owner before call getUserFolder
2 parents c54c6a8 + 4173dfe commit 5d669ab

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed

apps/files_versions/lib/Listener/FileEventsListener.php

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,10 @@
5959
use OCP\Files\IMimeTypeLoader;
6060
use OCP\Files\IRootFolder;
6161
use OCP\Files\Node;
62+
use OCP\IUserSession;
6263
use Psr\Log\LoggerInterface;
6364

6465
class FileEventsListener implements IEventListener {
65-
private IRootFolder $rootFolder;
66-
private IVersionManager $versionManager;
6766
/**
6867
* @var array<int, array>
6968
*/
@@ -76,19 +75,14 @@ class FileEventsListener implements IEventListener {
7675
* @var array<string, Node>
7776
*/
7877
private array $versionsDeleted = [];
79-
private IMimeTypeLoader $mimeTypeLoader;
80-
private LoggerInterface $logger;
8178

8279
public function __construct(
83-
IRootFolder $rootFolder,
84-
IVersionManager $versionManager,
85-
IMimeTypeLoader $mimeTypeLoader,
86-
LoggerInterface $logger,
80+
private IRootFolder $rootFolder,
81+
private IVersionManager $versionManager,
82+
private IMimeTypeLoader $mimeTypeLoader,
83+
private IUserSession $userSession,
84+
private LoggerInterface $logger,
8785
) {
88-
$this->rootFolder = $rootFolder;
89-
$this->versionManager = $versionManager;
90-
$this->mimeTypeLoader = $mimeTypeLoader;
91-
$this->logger = $logger;
9286
}
9387

9488
public function handle(Event $event): void {
@@ -354,18 +348,20 @@ public function pre_renameOrCopy_hook(Node $source, Node $target): void {
354348
* If no user is connected, try to use the node's owner.
355349
*/
356350
private function getPathForNode(Node $node): ?string {
357-
try {
351+
$user = $this->userSession->getUser()?->getUID();
352+
if ($user) {
358353
return $this->rootFolder
359-
->getUserFolder(\OC_User::getUser())
354+
->getUserFolder($user)
360355
->getRelativePath($node->getPath());
361-
} catch (\Throwable $ex) {
362-
$owner = $node->getOwner();
363-
if ($owner === null) {
364-
return null;
365-
}
356+
}
357+
358+
$owner = $node->getOwner()?->getUid();
359+
if ($owner) {
366360
return $this->rootFolder
367-
->getUserFolder($owner->getUid())
361+
->getUserFolder($owner)
368362
->getRelativePath($node->getPath());
369363
}
364+
365+
return null;
370366
}
371367
}

0 commit comments

Comments
 (0)