| Current Path : /home/rtorresani/www/vendor/magento/module-customer-graph-ql/Model/Customer/ |
| Current File : //home/rtorresani/www/vendor/magento/module-customer-graph-ql/Model/Customer/GetCustomer.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\CustomerGraphQl\Model\Customer;
use Magento\Customer\Api\AccountManagementInterface;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Api\Data\CustomerInterface;
use Magento\Customer\Model\AuthenticationInterface;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\GraphQl\Exception\GraphQlAuthenticationException;
use Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException;
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException;
use Magento\GraphQl\Model\Query\ContextInterface;
/**
* Get customer
*/
class GetCustomer
{
/**
* @var AuthenticationInterface
*/
private $authentication;
/**
* @var CustomerRepositoryInterface
*/
private $customerRepository;
/**
* @var AccountManagementInterface
*/
private $accountManagement;
/**
* @param AuthenticationInterface $authentication
* @param CustomerRepositoryInterface $customerRepository
* @param AccountManagementInterface $accountManagement
*/
public function __construct(
AuthenticationInterface $authentication,
CustomerRepositoryInterface $customerRepository,
AccountManagementInterface $accountManagement
) {
$this->authentication = $authentication;
$this->customerRepository = $customerRepository;
$this->accountManagement = $accountManagement;
}
/**
* Get customer
*
* @param ContextInterface $context
* @return CustomerInterface
* @throws GraphQlAuthenticationException
* @throws GraphQlAuthorizationException
* @throws GraphQlInputException
* @throws GraphQlNoSuchEntityException
*/
public function execute(ContextInterface $context): CustomerInterface
{
$currentUserId = $context->getUserId();
try {
$customer = $this->customerRepository->getById($currentUserId);
// @codeCoverageIgnoreStart
} catch (NoSuchEntityException $e) {
throw new GraphQlNoSuchEntityException(
__('Customer with id "%customer_id" does not exist.', ['customer_id' => $currentUserId]),
$e
);
} catch (LocalizedException $e) {
throw new GraphQlInputException(__($e->getMessage()));
// @codeCoverageIgnoreEnd
}
if (true === $this->authentication->isLocked($currentUserId)) {
throw new GraphQlAuthenticationException(__('The account is locked.'));
}
try {
$confirmationStatus = $this->accountManagement->getConfirmationStatus($currentUserId);
// @codeCoverageIgnoreStart
} catch (LocalizedException $e) {
throw new GraphQlInputException(__($e->getMessage()));
// @codeCoverageIgnoreEnd
}
if ($confirmationStatus === AccountManagementInterface::ACCOUNT_CONFIRMATION_REQUIRED) {
throw new GraphQlAuthenticationException(__("This account isn't confirmed. Verify and try again."));
}
return $customer;
}
}