diff --git a/typo3/sysext/core/Classes/Routing/Aspect/PersistedAliasMapper.php b/typo3/sysext/core/Classes/Routing/Aspect/PersistedAliasMapper.php index 17d2ed1b58deb8da9c2cfe05ee68fd9c9f75edc2..79b3308bd90b552b7f7cae88c9769d6809a9e7b5 100644 --- a/typo3/sysext/core/Classes/Routing/Aspect/PersistedAliasMapper.php +++ b/typo3/sysext/core/Classes/Routing/Aspect/PersistedAliasMapper.php @@ -24,6 +24,7 @@ use TYPO3\CMS\Core\Context\ContextAwareTrait; use TYPO3\CMS\Core\Context\LanguageAspectFactory; use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Database\Query\QueryBuilder; +use TYPO3\CMS\Core\Database\Query\Restriction\FrontendGroupRestriction; use TYPO3\CMS\Core\Database\Query\Restriction\FrontendRestrictionContainer; use TYPO3\CMS\Core\Domain\Repository\PageRepository; use TYPO3\CMS\Core\Routing\Legacy\PersistedAliasMapperLegacyTrait; @@ -255,6 +256,9 @@ class PersistedAliasMapper implements PersistedMappableAspectInterface, StaticMa $queryBuilder->setRestrictions( GeneralUtility::makeInstance(FrontendRestrictionContainer::class, $this->context) ); + // Frontend Groups are not available at this time (initialized via TSFE->determineId) + // So this must be excluded to allow access restricted records + $queryBuilder->getRestrictions()->removeByType(FrontendGroupRestriction::class); return $queryBuilder; } diff --git a/typo3/sysext/core/Classes/Routing/Aspect/PersistedPatternMapper.php b/typo3/sysext/core/Classes/Routing/Aspect/PersistedPatternMapper.php index cab3a2dce15c3f59377566f5de1377d185aa7462..e1db676fe99e96ed6f4a7ead8b7fd27480fcfa76 100644 --- a/typo3/sysext/core/Classes/Routing/Aspect/PersistedPatternMapper.php +++ b/typo3/sysext/core/Classes/Routing/Aspect/PersistedPatternMapper.php @@ -24,6 +24,7 @@ use TYPO3\CMS\Core\Context\ContextAwareTrait; use TYPO3\CMS\Core\Context\LanguageAspectFactory; use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Database\Query\QueryBuilder; +use TYPO3\CMS\Core\Database\Query\Restriction\FrontendGroupRestriction; use TYPO3\CMS\Core\Database\Query\Restriction\FrontendRestrictionContainer; use TYPO3\CMS\Core\Domain\Repository\PageRepository; use TYPO3\CMS\Core\Routing\Legacy\PersistedPatternMapperLegacyTrait; @@ -254,6 +255,9 @@ class PersistedPatternMapper implements PersistedMappableAspectInterface, Static $queryBuilder->setRestrictions( GeneralUtility::makeInstance(FrontendRestrictionContainer::class, $this->context) ); + // Frontend Groups are not available at this time (initialized via TSFE->determineId) + // So this must be excluded to allow access restricted records + $queryBuilder->getRestrictions()->removeByType(FrontendGroupRestriction::class); return $queryBuilder; } diff --git a/typo3/sysext/core/Tests/Functional/Routing/Aspect/PersistedAliasMapperTest.php b/typo3/sysext/core/Tests/Functional/Routing/Aspect/PersistedAliasMapperTest.php index 828449239801279155f0c54295c713697a0e72b9..ff8b851af62d1419cce3dab82a222f286679c23b 100644 --- a/typo3/sysext/core/Tests/Functional/Routing/Aspect/PersistedAliasMapperTest.php +++ b/typo3/sysext/core/Tests/Functional/Routing/Aspect/PersistedAliasMapperTest.php @@ -262,10 +262,11 @@ class PersistedAliasMapperTest extends FunctionalTestCase ['slug' => 'hidden-visibility-slug', 'uid' => '4051'], false, ], + // fe_group slugs are always considered 'restricted-visibility-slug, raw context' => [ $rawContext, ['slug' => 'restricted-visibility-slug', 'uid' => '4052'], - false, + true, ], 'scheduled-visibility-slug, raw context' => [ $rawContext, @@ -277,10 +278,11 @@ class PersistedAliasMapperTest extends FunctionalTestCase ['slug' => 'hidden-visibility-slug', 'uid' => '4051'], true, ], + // fe_group slugs are always considered 'restricted-visibility-slug, frontend-groups context (13)' => [ $frontendGroupsContext, ['slug' => 'restricted-visibility-slug', 'uid' => '4052'], - false, // @todo actually `true`, FrontendGroupRestriction does not support Context, yet + true, ], 'scheduled-visibility-slug, scheduled context (timestamp 20000)' => [ $scheduledContext, diff --git a/typo3/sysext/core/Tests/Functional/Routing/Aspect/PersistedPatternMapperTest.php b/typo3/sysext/core/Tests/Functional/Routing/Aspect/PersistedPatternMapperTest.php index 564cc97d2054e1c30d85995300df6aa1506f1d44..6945d0590ff32557834542ead7e5e3b41762e359 100644 --- a/typo3/sysext/core/Tests/Functional/Routing/Aspect/PersistedPatternMapperTest.php +++ b/typo3/sysext/core/Tests/Functional/Routing/Aspect/PersistedPatternMapperTest.php @@ -266,10 +266,11 @@ class PersistedPatternMapperTest extends FunctionalTestCase ['slug' => 'hidden-visibility-slug-0', 'uid' => '4051'], false, ], + // fe_group slugs are always considered 'restricted-visibility-slug, raw context' => [ $rawContext, ['slug' => 'restricted-visibility-slug-0', 'uid' => '4052'], - false, + true, ], 'scheduled-visibility-slug, raw context' => [ $rawContext, @@ -281,10 +282,11 @@ class PersistedPatternMapperTest extends FunctionalTestCase ['slug' => 'hidden-visibility-slug-0', 'uid' => '4051'], true, ], + // fe_group slugs are always considered 'restricted-visibility-slug, frontend-groups context (13)' => [ $frontendGroupsContext, ['slug' => 'restricted-visibility-slug-0', 'uid' => '4052'], - false, // @todo actually `true`, FrontendGroupRestriction does not support Context, yet + true, ], 'scheduled-visibility-slug, scheduled context (timestamp 20000)' => [ $scheduledContext,