fix(files_sharing): Fix BeforeZipCreatedListener path handling

Path of directory is relative to root folder, not user folder.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2026-01-15 16:57:42 +01:00 committed by backportbot[bot]
parent 753af543ac
commit 102c5183e1

View file

@ -35,16 +35,20 @@ class BeforeZipCreatedListener implements IEventListener {
$dir = $event->getDirectory();
$files = $event->getFiles();
$pathsToCheck = [];
foreach ($files as $file) {
$pathsToCheck[] = $dir . '/' . $file;
if (empty($files)) {
$pathsToCheck = [$dir];
} else {
$pathsToCheck = [];
foreach ($files as $file) {
$pathsToCheck[] = $dir . '/' . $file;
}
}
// Check only for user/group shares. Don't restrict e.g. share links
$user = $this->userSession->getUser();
if ($user) {
$viewOnlyHandler = new ViewOnly(
$this->rootFolder->getUserFolder($user->getUID())
$this->rootFolder
);
if (!$viewOnlyHandler->check($pathsToCheck)) {
$event->setErrorMessage('Access to this resource or one of its sub-items has been denied.');