| Current Path : /var/www/www.indacotrentino.com/www/vendor/magento/module-customer/Model/ |
| Current File : /var/www/www.indacotrentino.com/www/vendor/magento/module-customer/Model/AccountManagementApi.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Customer\Model;
use Magento\Customer\Api\AddressRepositoryInterface;
use Magento\Customer\Api\CustomerMetadataInterface;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Api\Data\CustomerInterface;
use Magento\Customer\Api\Data\ValidationResultsInterfaceFactory;
use Magento\Customer\Helper\View as CustomerViewHelper;
use Magento\Customer\Model\Config\Share as ConfigShare;
use Magento\Customer\Model\Customer as CustomerModel;
use Magento\Customer\Model\Metadata\Validator;
use Magento\Framework\Api\ExtensibleDataObjectConverter;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\AuthorizationInterface;
use Magento\Framework\DataObjectFactory as ObjectFactory;
use Magento\Framework\Encryption\EncryptorInterface as Encryptor;
use Magento\Framework\Event\ManagerInterface;
use Magento\Framework\Exception\AuthorizationException;
use Magento\Framework\Mail\Template\TransportBuilder;
use Magento\Framework\Math\Random;
use Magento\Framework\Reflection\DataObjectProcessor;
use Magento\Framework\Registry;
use Magento\Framework\Stdlib\DateTime;
use Magento\Framework\Stdlib\StringUtils as StringHelper;
use Magento\Store\Model\StoreManagerInterface;
use Psr\Log\LoggerInterface as PsrLogger;
/**
* Account Management service implementation for external API access.
*
* Handle various customer account actions.
*
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class AccountManagementApi extends AccountManagement
{
/**
* @var AuthorizationInterface
*/
private $authorization;
/**
* @param CustomerFactory $customerFactory
* @param ManagerInterface $eventManager
* @param StoreManagerInterface $storeManager
* @param Random $mathRandom
* @param Validator $validator
* @param ValidationResultsInterfaceFactory $validationResultsDataFactory
* @param AddressRepositoryInterface $addressRepository
* @param CustomerMetadataInterface $customerMetadataService
* @param CustomerRegistry $customerRegistry
* @param PsrLogger $logger
* @param Encryptor $encryptor
* @param ConfigShare $configShare
* @param StringHelper $stringHelper
* @param CustomerRepositoryInterface $customerRepository
* @param ScopeConfigInterface $scopeConfig
* @param TransportBuilder $transportBuilder
* @param DataObjectProcessor $dataProcessor
* @param Registry $registry
* @param CustomerViewHelper $customerViewHelper
* @param DateTime $dateTime
* @param CustomerModel $customerModel
* @param ObjectFactory $objectFactory
* @param ExtensibleDataObjectConverter $extensibleDataObjectConverter
* @param AuthorizationInterface $authorization
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function __construct(
CustomerFactory $customerFactory,
ManagerInterface $eventManager,
StoreManagerInterface $storeManager,
Random $mathRandom,
Validator $validator,
ValidationResultsInterfaceFactory $validationResultsDataFactory,
AddressRepositoryInterface $addressRepository,
CustomerMetadataInterface $customerMetadataService,
CustomerRegistry $customerRegistry,
PsrLogger $logger,
Encryptor $encryptor,
ConfigShare $configShare,
StringHelper $stringHelper,
CustomerRepositoryInterface $customerRepository,
ScopeConfigInterface $scopeConfig,
TransportBuilder $transportBuilder,
DataObjectProcessor $dataProcessor,
Registry $registry,
CustomerViewHelper $customerViewHelper,
DateTime $dateTime,
CustomerModel $customerModel,
ObjectFactory $objectFactory,
ExtensibleDataObjectConverter $extensibleDataObjectConverter,
AuthorizationInterface $authorization
) {
$this->authorization = $authorization;
parent::__construct(
$customerFactory,
$eventManager,
$storeManager,
$mathRandom,
$validator,
$validationResultsDataFactory,
$addressRepository,
$customerMetadataService,
$customerRegistry,
$logger,
$encryptor,
$configShare,
$stringHelper,
$customerRepository,
$scopeConfig,
$transportBuilder,
$dataProcessor,
$registry,
$customerViewHelper,
$dateTime,
$customerModel,
$objectFactory,
$extensibleDataObjectConverter
);
}
/**
* @inheritDoc
*
* Override createAccount method to unset confirmation attribute for security purposes.
*/
public function createAccount(CustomerInterface $customer, $password = null, $redirectUrl = '')
{
$this->validateCustomerRequest($customer);
$customer = parent::createAccount($customer, $password, $redirectUrl);
$customer->setConfirmation(null);
return $customer;
}
/**
* Validate anonymous request
*
* @param CustomerInterface $customer
* @return void
* @throws AuthorizationException
*/
private function validateCustomerRequest(CustomerInterface $customer): void
{
$groupId = $customer->getGroupId();
if (isset($groupId) &&
!$this->authorization->isAllowed(self::ADMIN_RESOURCE)
) {
$params = ['resources' => self::ADMIN_RESOURCE];
throw new AuthorizationException(
__("The consumer isn't authorized to access %resources.", $params)
);
}
}
}