From e85445e0306a0b712f05e7ea274a4eb47af6f9c8 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Wed, 24 May 2023 14:33:29 +0100 Subject: [PATCH 1/4] [MenuBundle] fix Pimcore 10.6 compatibility issue --- .../Bundle/MenuBundle/Guard/PimcoreGuard.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php b/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php index 31426d7340..d76f31d6f8 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,17 @@ 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) { + $user = $user->getUser(); + } if ($user instanceof User) { return $user->isAllowed((string) $item->getAttribute('permission')); From de979dc171f7be593e64b5e037ed05a070c43c29 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Wed, 24 May 2023 14:34:18 +0100 Subject: [PATCH 2/4] [MenuBundle] fix Pimcore 10.6 compatibility issue --- src/CoreShop/Bundle/MenuBundle/Resources/config/services.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 9fbea279820063bbdafa49ad9eae99bff40c8334 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Wed, 24 May 2023 14:39:12 +0100 Subject: [PATCH 3/4] [MenuBundle] fix Pimcore 10.6 compatibility issue --- src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php b/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php index d76f31d6f8..6a1ae92f33 100644 --- a/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php +++ b/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php @@ -48,6 +48,10 @@ public function matchItem(ItemInterface $item): bool $user = $user->getUser(); } + if (class_exists(\Pimcore\Bundle\AdminBundle\Security\User\User::class) && $user instanceof \Pimcore\Bundle\AdminBundle\Security\User\User) { + $user = $user->getUser(); + } + if ($user instanceof User) { return $user->isAllowed((string) $item->getAttribute('permission')); } From 4c5322f91c57b1306563ca7683d007dd59e30712 Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Wed, 24 May 2023 15:16:00 +0100 Subject: [PATCH 4/4] [MenuBundle] fix Pimcore 10.6 compatibility issue - ignore psalm errors --- src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php b/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php index 6a1ae92f33..0322dfc612 100644 --- a/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php +++ b/src/CoreShop/Bundle/MenuBundle/Guard/PimcoreGuard.php @@ -45,10 +45,16 @@ public function matchItem(ItemInterface $item): bool $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(); }