diff --git a/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php b/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php index 31426d7340..0322dfc612 100644 --- a/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php +++ b/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php @@ -21,11 +21,12 @@ use Knp\Menu\ItemInterface; use Pimcore\Bundle\AdminBundle\Security\User\TokenStorageUserResolver; use Pimcore\Model\User; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class PimcoreGuard { public function __construct( - private TokenStorageUserResolver $tokenStorageUserResolver, + private TokenStorageInterface $tokenStorage ) { } @@ -35,7 +36,27 @@ public function matchItem(ItemInterface $item): bool return true; } - $user = $this->tokenStorageUserResolver->getUser(); + $token = $this->tokenStorage->getToken(); + + if (null === $token) { + return false; + } + + $user = $token->getUser(); + + if (class_exists(\Pimcore\Security\User\User::class) && $user instanceof \Pimcore\Security\User\User) { + /** + * @psalm-suppress UndefinedClass, UndefinedInterfaceMethod + */ + $user = $user->getUser(); + } + + if (class_exists(\Pimcore\Bundle\AdminBundle\Security\User\User::class) && $user instanceof \Pimcore\Bundle\AdminBundle\Security\User\User) { + /** + * @psalm-suppress UndefinedClass, UndefinedInterfaceMethod + */ + $user = $user->getUser(); + } if ($user instanceof User) { return $user->isAllowed((string) $item->getAttribute('permission')); diff --git a/src/CoreShop/Bundle/MenuBundle/Resources/config/services.yml b/src/CoreShop/Bundle/MenuBundle/Resources/config/services.yml index 8d4b5ad500..54b102dd4e 100644 --- a/src/CoreShop/Bundle/MenuBundle/Resources/config/services.yml +++ b/src/CoreShop/Bundle/MenuBundle/Resources/config/services.yml @@ -27,7 +27,7 @@ services: CoreShop\Bundle\MenuBundle\Guard\PimcoreGuard: arguments: - - '@Pimcore\Bundle\AdminBundle\Security\User\TokenStorageUserResolver' + - '@security.token_storage' coreshop.menu_provider.lazy_provider: class: Knp\Menu\Provider\LazyProvider