Heutiges Problem in unserer Internetagentur in unserem Onlineshop (Magento 2 CE 2.4.3): Die Extension Store Restriction Pro des Extension-Herstellers Magepsycho, die den Zugang für bestimmte Nutzergruppen zu bestimmten Seiten beschränken soll, funktioniert nicht wie gewünscht. Man hat hier die Möglichkeit, unter anderem CMS-Seiten auszuwählen, die auch ohne Registrierung zugänglich sind. Jedoch werden diese bei aktiviertem Cache nicht gezeigt, sondern zum Login umgeleitet. Die Konfiguration im Backend kommt also nicht an im Frontend.
Dies liegt daran, dass Magento bei aktivierten Cache die Funktion getFullActionName() nicht ordnungsgemäß ausführen kann, es wird ein leeres Ergebnis zurückgespielt. Da die Magento 2 Extension jedoch genau diesen ActionController abfragt und abhängig von diesem die erlaubten Seiten abprüft (wenn Actioncontroller leer, dann schaut diese bei den erlaubten Modulen nach), kommt es immer zu einer Ablehnung.
So müssen wir in der Datei
/app/code/MagePsycho/StoreRestrictionPro/Observer/Frontend/ControllerActionPredispatch.php
den Codeteil
if (in_array($fullActionName, ['cms_index_index', 'cms_page_view']) || 1==1) {
$this->srpHelper->log('::CMS::', true);
if (! $this->srpHelper->isRestrictedCmsPageAccessible()) {
$isCurrentPageRestricted = true;
}
} elseif (in_array($fullActionName, ['catalog_category_view']) || 1==1) {
$this->srpHelper->log('::CATEGORY::', true);
if (! $this->srpHelper->isRestrictedCategoryPageAccessible()) {
$isCurrentPageRestricted = true;
}
} elseif (in_array($fullActionName, ['catalog_product_view']) || 1==1) {
$this->srpHelper->log('::PRODUCT::', true);
if (! $this->srpHelper->isRestrictedProductPageAccessible()) {
$isCurrentPageRestricted = true;
}
} else {
$this->srpHelper->log('::MODULE::', true);
//get all the list of allowed modules
if (! $this->srpHelper->isRestrictedModulePageAccessible()) {
$isCurrentPageRestricted = true;
}
}
ersetzen mit
if (
! $this->srpHelper->isRestrictedCmsPageAccessible() &&
! $this->srpHelper->isRestrictedCategoryPageAccessible() &&
! $this->srpHelper->isRestrictedProductPageAccessible() &&
! $this->srpHelper->isRestrictedModulePageAccessible()
) {
$isCurrentPageRestricted = true;
}
Hiermit prüft er alle erlaubten Seiten und Pfadteile unabhängig von der Seitenart und die Extension funktioniert wieder wie gewünscht. Gesehen in unserer Webagentur in einem Onlineshop mit Magento CE 2.4.3.