Bug #100959
open
File storage 'fileadmin' as default storage must be allowed for editors to show other other filemounts in other file storages
Added by Robert Hafenried 11 months ago.
Updated 10 days ago.
Category:
Backend User Interface
Description
I have a separate file storage for the editors. However, this is only displayed if default file storage fileadmin has also been enabled. Otherwise, the error message appears:
You are not allowed to access the given folder: "" | TYPO3\CMS\Core\ResourceException\InsufficientFolderAccessPermissionsException thrown in file /www/htdocs/xxxxxxx/my-domain.de/typo3_src-12.4.1/typo3/sysext/core/Classes/Resource/ResourceStorage.php in line 849. Requested URL: https://my-domain.de/typo3/wizard/record/browse?token=--AnonymizedToken--&mode=file&bparams=%7C%7C%7Cgif,jpg,jpeg,tif,tiff,bmp,pcx,tga,png,pdf,ai,svg%7Cdata-72-tt_address-1-image-sys_file_reference
I would expect that fileadmin sharing is not necessary since editors are not supposed to work with this file storage.
- Target version deleted (
Candidate for patchlevel)
We have the same problem in our project. Currently we use this patch:
Index: Classes/ElementBrowser/AbstractResourceBrowser.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/Classes/ElementBrowser/AbstractResourceBrowser.php b/Classes/ElementBrowser/AbstractResourceBrowser.php
--- a/Classes/ElementBrowser/AbstractResourceBrowser.php
+++ b/Classes/ElementBrowser/AbstractResourceBrowser.php (date 1688372094488)
@@ -116,9 +116,31 @@
}
if (!$this->selectedFolder) {
- $this->selectedFolder = $resourceFactory->getDefaultStorage()?->getRootLevelFolder() ?? null;
+ $this->selectedFolder = $this->findAccessableRootLevelFolder();
}
}
+
+ private function findAccessableRootLevelFolder(): ?Folder
+ {
+ $storages = [];
+ $storageRepository = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Resource\StorageRepository::class);
+ foreach ($storageRepository->findAll() as $storage) {
+ if ($storage->isDefault()) {
+ \array_unshift($storages, $storage);
+ } else {
+ $storages[] = $storage;
+ }
+ }
+
+ foreach ($storages as $storage) {
+ $rootFolder = $storage->getRootLevelFolder();
+ if ($rootFolder && $rootFolder->checkActionPermission('read')) {
+ return $rootFolder;
+ }
+ }
+
+ return null;
+ }
protected function getViewModeButton(): ButtonInterface
{
I'm sure, that this is not the correct way, but the issue is, that the default-Storage is not accessable for the user by permissions. This patch select the first available folder, if nothing is selected.
We had the same problem here. But unfortunately the patch doesn't help. Error still exists. Fortunately we had only one site in this instance and only one used file storage. So we can set the second storage as default. That's ok for the moment.
But I think that is not a solution for that issue in general. In multisite instances and multiple editors with different access right on filemounts/filestorages it's not possible to give the user only one storage.
Our system: TYPO3 12.4.14, PHP 8.2
Also available in: Atom
PDF