mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 17:27:36 +00:00
84 lines
2.6 KiB
PHP
84 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\CustomerGraphQl\Plugin;
|
|
|
|
use Magento\Authorization\Model\UserContextInterface;
|
|
use Magento\Customer\Model\ResourceModel\CustomerRepository;
|
|
use Magento\Customer\Model\Session as CustomerSession;
|
|
use Magento\CustomerGraphQl\Model\Context\AddUserInfoToContext;
|
|
use Magento\Framework\App\ObjectManager;
|
|
use Magento\Framework\App\ResponseInterface;
|
|
use Magento\Framework\Exception\LocalizedException;
|
|
use Magento\Framework\Exception\NoSuchEntityException;
|
|
use Magento\GraphQl\Controller\GraphQl as GraphQlController;
|
|
|
|
/**
|
|
* Clear the user data out of the session object before returning the GraphQL response
|
|
*
|
|
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
|
|
*/
|
|
class ClearCustomerSessionAfterRequest
|
|
{
|
|
/**
|
|
* @var UserContextInterface
|
|
*/
|
|
private $userContext;
|
|
|
|
/**
|
|
* @var CustomerSession
|
|
*/
|
|
private $customerSession;
|
|
|
|
/**
|
|
* @var CustomerRepository
|
|
*/
|
|
private $customerRepository;
|
|
|
|
/**
|
|
* @var AddUserInfoToContext
|
|
*/
|
|
private $addUserInfoToContext;
|
|
|
|
/**
|
|
* @param UserContextInterface $userContext
|
|
* @param CustomerSession $customerSession
|
|
* @param CustomerRepository $customerRepository
|
|
* @param AddUserInfoToContext $addUserInfoToContext
|
|
*/
|
|
public function __construct(
|
|
UserContextInterface $userContext,
|
|
CustomerSession $customerSession,
|
|
CustomerRepository $customerRepository,
|
|
AddUserInfoToContext $addUserInfoToContext = null
|
|
) {
|
|
$this->userContext = $userContext;
|
|
$this->customerSession = $customerSession;
|
|
$this->customerRepository = $customerRepository;
|
|
$this->addUserInfoToContext = $addUserInfoToContext ??
|
|
ObjectManager::getInstance()->get(AddUserInfoToContext::class);
|
|
}
|
|
|
|
/**
|
|
* Clear the customer data from the session after business logic has completed
|
|
*
|
|
* @param GraphQlController $controller
|
|
* @param ResponseInterface $response
|
|
* @return ResponseInterface
|
|
*
|
|
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
|
*/
|
|
public function afterDispatch(GraphQlController $controller, ResponseInterface $response): ResponseInterface
|
|
{
|
|
$loggedInCustomerData = $this->addUserInfoToContext->getLoggedInCustomerData();
|
|
$this->customerSession->setCustomerId($loggedInCustomerData ? $loggedInCustomerData->getId() : null);
|
|
$this->customerSession->setCustomerGroupId($loggedInCustomerData ? $loggedInCustomerData->getGroupId() : null);
|
|
|
|
return $response;
|
|
}
|
|
}
|