Skip to content

Commit 57cba2a

Browse files
committed
fix: attempt to repair upload folder permissions
Signed-off-by: Robin Appelman <robin@icewind.nl>
1 parent 8079584 commit 57cba2a

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

apps/dav/lib/RootCollection.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ public function __construct() {
160160
Server::get(CleanupService::class),
161161
$rootFolder,
162162
$userSession,
163+
$logger,
163164
);
164165
$uploadCollection->disableListing = $disableListing;
165166

apps/dav/lib/Upload/RootCollection.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
use OCP\Files\IRootFolder;
1313
use OCP\IUserSession;
14+
use Psr\Log\LoggerInterface;
1415
use Sabre\DAVACL\AbstractPrincipalCollection;
1516
use Sabre\DAVACL\PrincipalBackend;
1617

@@ -22,6 +23,7 @@ public function __construct(
2223
private CleanupService $cleanupService,
2324
private IRootFolder $rootFolder,
2425
private IUserSession $userSession,
26+
private LoggerInterface $logger,
2527
) {
2628
parent::__construct($principalBackend, $principalPrefix);
2729
}
@@ -30,7 +32,7 @@ public function __construct(
3032
* @inheritdoc
3133
*/
3234
public function getChildForPrincipal(array $principalInfo): UploadHome {
33-
return new UploadHome($principalInfo, $this->cleanupService, $this->rootFolder, $this->userSession);
35+
return new UploadHome($principalInfo, $this->cleanupService, $this->rootFolder, $this->userSession, $this->logger);
3436
}
3537

3638
/**

apps/dav/lib/Upload/UploadHome.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99

1010
use OC\Files\View;
1111
use OCA\DAV\Connector\Sabre\Directory;
12+
use OCP\Constants;
1213
use OCP\Files\Folder;
1314
use OCP\Files\IRootFolder;
1415
use OCP\Files\NotFoundException;
1516
use OCP\IUserSession;
17+
use Psr\Log\LoggerInterface;
1618
use Sabre\DAV\Exception\Forbidden;
1719
use Sabre\DAV\ICollection;
1820

@@ -24,6 +26,7 @@ public function __construct(
2426
private readonly CleanupService $cleanupService,
2527
private readonly IRootFolder $rootFolder,
2628
private readonly IUserSession $userSession,
29+
private readonly LoggerInterface $logger,
2730
) {
2831
}
2932

@@ -91,6 +94,12 @@ private function getUploadFolder(): Folder {
9194

9295
private function impl(): Directory {
9396
$folder = $this->getUploadFolder();
97+
if (!$folder->isCreatable()) {
98+
$user = $this->userSession->getUser();
99+
$this->logger->warning('Upload home not writable for ' . $user->getUID() . ', attempting to fix', ['permissions' => $folder->getPermissions()]);
100+
$cache = $folder->getStorage()->getCache();
101+
$cache->update($folder->getId(), ['permissions', Constants::PERMISSION_ALL]);
102+
}
94103
$view = new View($folder->getPath());
95104
return new Directory($view, $folder);
96105
}

0 commit comments

Comments
 (0)