diff --git a/Classes/Hooks/TypoScriptFrontendController.php b/Classes/Hooks/TypoScriptFrontendController.php deleted file mode 100644 index 54b365a43..000000000 --- a/Classes/Hooks/TypoScriptFrontendController.php +++ /dev/null @@ -1,52 +0,0 @@ - 0 && GeneralUtility::makeInstance(DmRegistryUtility::class)->validateAndRemoveAccessToken($accessToken)) { - /** @var UserAspect $userAspect */ - $userAspect = $typoScriptFrontendController->getContext()->getAspect('frontend.user'); - - // we reset the content if required - if (!in_array($directMailFeGroup, $userAspect->getGroupIds(), true)) { - // code was refactor, using a different hook! - $typoScriptFrontendController->getContext()->setAspect( - 'frontend.user', - new UserAspect($typoScriptFrontendController->fe_user, [$directMailFeGroup]) - ); - } - } - } -} diff --git a/Classes/Middleware/SimulateFrontendUserGroup.php b/Classes/Middleware/SimulateFrontendUserGroup.php new file mode 100644 index 000000000..56f78797e --- /dev/null +++ b/Classes/Middleware/SimulateFrontendUserGroup.php @@ -0,0 +1,59 @@ +getQueryParams()['dmail_fe_group'] ?? 0); + $accessToken = (string)($request->getQueryParams()['access_token'] ?? ''); + + if ($directMailFeGroup > 0 && GeneralUtility::makeInstance(DmRegistryUtility::class)->validateAndRemoveAccessToken($accessToken)) { + $userAspect = $this->context->getAspect('frontend.user'); + + // overwrite 'frontend.user' aspect if required + if (!in_array($directMailFeGroup, $userAspect->getGroupIds(), true)) { + $frontendUser = $request->getAttribute('frontend.user'); + $this->context->setAspect( + 'frontend.user', + new UserAspect($frontendUser, [$directMailFeGroup]), + ); + } + } + + return $handler->handle($request); + } +} diff --git a/Configuration/RequestMiddlewares.php b/Configuration/RequestMiddlewares.php index 3d19efa27..41d3fa268 100644 --- a/Configuration/RequestMiddlewares.php +++ b/Configuration/RequestMiddlewares.php @@ -8,5 +8,14 @@ 'friends-of-typo3/jumpurl', ], ], + 'direct-mail/simulate-frontend-user-group' => [ + 'target' => \DirectMailTeam\DirectMail\Middleware\SimulateFrontendUserGroup::class, + 'before' => [ + 'typo3/cms-frontend/tsfe', + ], + 'after' => [ + 'typo3/cms-frontend/authentication', + ], + ], ], ]; diff --git a/ext_localconf.php b/ext_localconf.php index 82177c2e0..f46523f16 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -6,9 +6,6 @@ // https://docs.typo3.org/m/typo3/reference-coreapi/12.4/en-us/ExtensionArchitecture/BestPractises/ConfigurationFiles.html (function () { - // Register hook for simulating a user group - $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_checkEnableFields']['direct_mail'] = 'DirectMailTeam\\DirectMail\\Hooks\\TypoScriptFrontendController->simulateUsergroup'; - // Get extension configuration so we can use it here: $extConf = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Configuration\ExtensionConfiguration::class)->get('direct_mail');