12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?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\Data\CustomerInterface;
- use Magento\Customer\Api\Data\CustomerInterfaceFactory;
- use Magento\Framework\Api\DataObjectHelper;
- use Magento\Framework\Exception\LocalizedException;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Store\Model\StoreManagerInterface;
- /**
- * Class CreateAccount creates new customer account
- */
- class CreateAccount
- {
- /**
- * @var DataObjectHelper
- */
- private $dataObjectHelper;
- /**
- * @var CustomerInterfaceFactory
- */
- private $customerFactory;
- /**
- * @var AccountManagementInterface
- */
- private $accountManagement;
- /**
- * @var StoreManagerInterface
- */
- private $storeManager;
- /**
- * @param DataObjectHelper $dataObjectHelper
- * @param CustomerInterfaceFactory $customerFactory
- * @param StoreManagerInterface $storeManager
- * @param AccountManagementInterface $accountManagement
- */
- public function __construct(
- DataObjectHelper $dataObjectHelper,
- CustomerInterfaceFactory $customerFactory,
- StoreManagerInterface $storeManager,
- AccountManagementInterface $accountManagement
- ) {
- $this->dataObjectHelper = $dataObjectHelper;
- $this->customerFactory = $customerFactory;
- $this->accountManagement = $accountManagement;
- $this->storeManager = $storeManager;
- }
- /**
- * Creates new customer account
- *
- * @param array $args
- * @return CustomerInterface
- * @throws LocalizedException
- * @throws NoSuchEntityException
- */
- public function execute(array $args): CustomerInterface
- {
- $customerDataObject = $this->customerFactory->create();
- $this->dataObjectHelper->populateWithArray(
- $customerDataObject,
- $args['input'],
- CustomerInterface::class
- );
- $store = $this->storeManager->getStore();
- $customerDataObject->setWebsiteId($store->getWebsiteId());
- $customerDataObject->setStoreId($store->getId());
- $password = array_key_exists('password', $args['input']) ? $args['input']['password'] : null;
- return $this->accountManagement->createAccount($customerDataObject, $password);
- }
- }
|