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(