mirror of
https://github.com/nextcloud/server.git
synced 2026-04-14 21:48:02 -04:00
Merge pull request #41749 from nextcloud/checkUserOwner
fix(files_versions): Check for user and owner before call getUserFolder
This commit is contained in:
commit
5d669abd11
1 changed files with 18 additions and 22 deletions
|
|
@ -59,11 +59,10 @@ use OCP\Files\Folder;
|
|||
use OCP\Files\IMimeTypeLoader;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\Files\Node;
|
||||
use OCP\IUserSession;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class FileEventsListener implements IEventListener {
|
||||
private IRootFolder $rootFolder;
|
||||
private IVersionManager $versionManager;
|
||||
/**
|
||||
* @var array<int, array>
|
||||
*/
|
||||
|
|
@ -76,19 +75,14 @@ class FileEventsListener implements IEventListener {
|
|||
* @var array<string, Node>
|
||||
*/
|
||||
private array $versionsDeleted = [];
|
||||
private IMimeTypeLoader $mimeTypeLoader;
|
||||
private LoggerInterface $logger;
|
||||
|
||||
public function __construct(
|
||||
IRootFolder $rootFolder,
|
||||
IVersionManager $versionManager,
|
||||
IMimeTypeLoader $mimeTypeLoader,
|
||||
LoggerInterface $logger,
|
||||
private IRootFolder $rootFolder,
|
||||
private IVersionManager $versionManager,
|
||||
private IMimeTypeLoader $mimeTypeLoader,
|
||||
private IUserSession $userSession,
|
||||
private LoggerInterface $logger,
|
||||
) {
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->versionManager = $versionManager;
|
||||
$this->mimeTypeLoader = $mimeTypeLoader;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function handle(Event $event): void {
|
||||
|
|
@ -354,18 +348,20 @@ class FileEventsListener implements IEventListener {
|
|||
* If no user is connected, try to use the node's owner.
|
||||
*/
|
||||
private function getPathForNode(Node $node): ?string {
|
||||
try {
|
||||
$user = $this->userSession->getUser()?->getUID();
|
||||
if ($user) {
|
||||
return $this->rootFolder
|
||||
->getUserFolder(\OC_User::getUser())
|
||||
->getRelativePath($node->getPath());
|
||||
} catch (\Throwable $ex) {
|
||||
$owner = $node->getOwner();
|
||||
if ($owner === null) {
|
||||
return null;
|
||||
}
|
||||
return $this->rootFolder
|
||||
->getUserFolder($owner->getUid())
|
||||
->getUserFolder($user)
|
||||
->getRelativePath($node->getPath());
|
||||
}
|
||||
|
||||
$owner = $node->getOwner()?->getUid();
|
||||
if ($owner) {
|
||||
return $this->rootFolder
|
||||
->getUserFolder($owner)
|
||||
->getRelativePath($node->getPath());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue