diff --git a/vendor/magento/module-customer-graph-ql/Model/Context/AddUserInfoToContext.php b/vendor/magento/module-customer-graph-ql/Model/Context/AddUserInfoToContext.php index b3ae57e0ff994..9c70f36acb553 100644 --- a/vendor/magento/module-customer-graph-ql/Model/Context/AddUserInfoToContext.php +++ b/vendor/magento/module-customer-graph-ql/Model/Context/AddUserInfoToContext.php @@ -9,10 +9,12 @@ use Magento\Authorization\Model\UserContextInterface; use Magento\Customer\Api\Data\CustomerInterface; +use Magento\Customer\Model\Config\Share; use Magento\Customer\Model\ResourceModel\CustomerRepository; use Magento\Customer\Model\Session; use Magento\GraphQl\Model\Query\ContextParametersInterface; use Magento\GraphQl\Model\Query\UserContextParametersProcessorInterface; +use Magento\Store\Model\StoreManagerInterface; /** * @SuppressWarnings(PHPMD.CookieAndSessionMisuse) @@ -39,19 +41,34 @@ class AddUserInfoToContext implements UserContextParametersProcessorInterface */ private $loggedInCustomerData = null; + /** + * @var Share + */ + private $configShare; + + /** + * @var StoreManagerInterface + */ + private $storeManager; /** * @param UserContextInterface $userContext * @param Session $session * @param CustomerRepository $customerRepository + * @param Share $configShare + * @param StoreManagerInterface $storeManager */ public function __construct( UserContextInterface $userContext, Session $session, - CustomerRepository $customerRepository + CustomerRepository $customerRepository, + Share $configShare, + StoreManagerInterface $storeManager ) { $this->userContext = $userContext; $this->session = $session; $this->customerRepository = $customerRepository; + $this->configShare = $configShare; + $this->storeManager = $storeManager; } /** @@ -113,8 +130,14 @@ public function getLoggedInCustomerData(): ?CustomerInterface */ private function isCustomer(?int $customerId, ?int $customerType): bool { - return !empty($customerId) + $result = !empty($customerId) && !empty($customerType) && $customerType === UserContextInterface::USER_TYPE_CUSTOMER; + + if ($result && $this->configShare->isWebsiteScope()) { + $customer = $this->customerRepository->getById($customerId); + return (int)$customer->getWebsiteId() === (int)$this->storeManager->getStore()->getWebsiteId(); + } + return $result; } }