Update: Der Fehler ist offenbar nicht in Contao 5.7.5 begründet, sondern erscheint erst bei installierter Contao Marketing Suite 3.1.1 (https://packagist.org/packages/numer...arketing-suite). Eine Deinstallation beseitigt die Fehlfunktion.
Hallo Community,
mir ist gerade bei der Aktualisierung eines Projekts von Contao 5.3.x auf die aktuelle 5.7.5 ein Problem aufgefallen, das ich nicht ganz zuordnen kann. Folgendes Szenario:
- Projekt nutzt ein Newsarchiv für Referenzprojekte, ein weiteres Newsarchiv ist als ungenutztes Testarchiv angelegt
- Es gibt eine Benutzergruppe für Redakteure, die umfangreiche Bearbeitungsrechte auf der Seite haben, auch die Bearbeitung des Projektarchivs (nicht des Testarchivs). Benutzerrechte unter 5.3.x korrekt gesetzt.
- Nach Update von 5.3.x auf 5.7.5 erhalten Mitglieder der Redakteursgruppe beim Aufruf von „Nachrichten“ (/contao?do=news) eine Fehlermeldung: „Not enough permissions to read [Subject: Source: tl_news_archive; ID: 2]“. Daraufhin unter 5.7.5 alle Benutzerrechte überprüft, keine Fehler gefunden.
- ID: 2 ist das Archiv, auf das die Redakteure *keinen* Zugriff haben – das dürfte aber die Übersicht in „Nachrichten“ nicht behindern.
- Nach dem Löschen des Newsarchivs mit der ID: 2 können Redakteure den Bereich „Nachrichten“ wieder aufrufen und sehen ihr bearbeitbares Projektarchiv.
- Sehr seltsam dabei: In den Einstellungen der Newsarchive unter 5.7.5 fehlt das komplette (neue) Panel „Zugriffsrechte“, mit dem sich die Rechte auf Archivebene vergeben lassen.
- Der Debug-Mode gibt keinerlei Fehler aus, die Datenbankstruktur ist aktuell.
Offensichtlich passt Contao 5.7.5 irgendetwas nicht, damit die Zugriffsrechte auf Archivebene erscheinen. Ich habe keinen Ansatz, wo ich suchen könnte. Hat jemand eine Idee? Oder gibt es ein verstecktes Häkchen, mit dem ich die Rechte auf Archivebene erst aktivieren muss?
Screenshot Newsarchiv ohne Zugriffsrechte: fehlendezugriffsrechte.png
Liebe Grüße,
Heiner
EDIT: Lege ich wieder ein beliebiges neues Newsarchiv an, auf das die Redakteure keinen Zugriff haben, ist der Fehler wieder da. Stack-Trace:
Code:
AccessDeniedException
Contao\CoreBundle\Exception\AccessDeniedException:
Not enough permissions to read [Subject: Source: tl_news_archive; ID: 5].
at vendor/contao/core-bundle/contao/classes/DataContainer.php:822
at Contao\DataContainer->denyAccessUnlessGranted('contao_dc.tl_news_archive', object(ReadAction))
(vendor/contao/core-bundle/contao/drivers/DC_Table.php:4552)
at Contao\DC_Table->listView()
(vendor/contao/core-bundle/contao/drivers/DC_Table.php:523)
at Contao\DC_Table->showAll()
(vendor/contao/core-bundle/contao/classes/Backend.php:463)
at Contao\Backend->getBackendModule('news', null)
(vendor/contao/core-bundle/contao/controllers/BackendMain.php:143)
at Contao\BackendMain->run()
(vendor/contao/core-bundle/src/Controller/Backend/BackendController.php:45)
at Contao\CoreBundle\Controller\Backend\BackendController->mainAction()
(vendor/symfony/http-kernel/HttpKernel.php:183)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
(vendor/symfony/http-kernel/HttpKernel.php:76)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor/symfony/http-kernel/Kernel.php:193)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(public/index.php:42)
Code:
AccessDeniedHttpException
Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException:
Not enough permissions to read [Subject: Source: tl_news_archive; ID: 5].
at vendor/symfony/security-http/Firewall/ExceptionListener.php:126
at Symfony\Component\Security\Http\Firewall\ExceptionListener->handleAccessDeniedException(object(ExceptionEvent), object(AccessDeniedException))
(vendor/symfony/security-http/Firewall/ExceptionListener.php:93)
at Symfony\Component\Security\Http\Firewall\ExceptionListener->onKernelException(object(ExceptionEvent), 'kernel.exception', object(TraceableEventDispatcher))
(vendor/symfony/event-dispatcher/Debug/WrappedListener.php:115)
at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object(ExceptionEvent), 'kernel.exception', object(TraceableEventDispatcher))
(vendor/symfony/event-dispatcher/EventDispatcher.php:206)
at Symfony\Component\EventDispatcher\EventDispatcher->callListeners(array(object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener)), 'kernel.exception', object(ExceptionEvent))
(vendor/symfony/event-dispatcher/EventDispatcher.php:56)
at Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object(ExceptionEvent), 'kernel.exception')
(vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:129)
at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch(object(ExceptionEvent), 'kernel.exception')
(vendor/symfony/http-kernel/HttpKernel.php:241)
at Symfony\Component\HttpKernel\HttpKernel->handleThrowable(object(AccessDeniedException), object(Request), 1)
(vendor/symfony/http-kernel/HttpKernel.php:91)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor/symfony/http-kernel/Kernel.php:193)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(public/index.php:42)