diff --git a/typo3/sysext/core/Classes/Domain/Event/BeforePageIsRetrievedEvent.php b/typo3/sysext/core/Classes/Domain/Event/BeforePageIsRetrievedEvent.php index 14fa60c488e62aa040dfe066fe3f0981c588b836..571434a699f2fdffafefcf66fcef8b565613cf1e 100644 --- a/typo3/sysext/core/Classes/Domain/Event/BeforePageIsRetrievedEvent.php +++ b/typo3/sysext/core/Classes/Domain/Event/BeforePageIsRetrievedEvent.php @@ -32,7 +32,7 @@ final class BeforePageIsRetrievedEvent public function __construct( private int $pageId, - private readonly bool $skipGroupAccessCheck, + private bool $skipGroupAccessCheck, private readonly Context $context, ) {} @@ -61,6 +61,16 @@ final class BeforePageIsRetrievedEvent $this->pageId = $pageId; } + public function skipGroupAccessCheck(): void + { + $this->skipGroupAccessCheck = true; + } + + public function respectGroupAccessCheck(): void + { + $this->skipGroupAccessCheck = false; + } + public function isGroupAccessCheckSkipped(): bool { return $this->skipGroupAccessCheck; diff --git a/typo3/sysext/core/Classes/Domain/Repository/PageRepository.php b/typo3/sysext/core/Classes/Domain/Repository/PageRepository.php index d0d3b0262100b71ada0b13d427ef59333ad06599..86a141d79d2e8dc2362733dd8eca1972d210a55d 100644 --- a/typo3/sysext/core/Classes/Domain/Repository/PageRepository.php +++ b/typo3/sysext/core/Classes/Domain/Repository/PageRepository.php @@ -237,6 +237,7 @@ class PageRepository implements LoggerAwareInterface // In case an event listener resolved the page on its own, directly return it return $event->getPage()->toArray(true); } + $disableGroupAccessCheck = $event->isGroupAccessCheckSkipped(); $uid = $event->getPageId(); $cacheIdentifier = 'PageRepository_getPage_' . md5( implode(