123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Integration\Model;
- use Magento\Customer\Api\AccountManagementInterface;
- use Magento\Framework\Exception\LocalizedException;
- use Magento\Integration\Model\CredentialsValidator;
- use Magento\Integration\Model\Oauth\Token as Token;
- use Magento\Integration\Model\Oauth\TokenFactory as TokenModelFactory;
- use Magento\Integration\Model\ResourceModel\Oauth\Token\CollectionFactory as TokenCollectionFactory;
- use Magento\Integration\Model\Oauth\Token\RequestThrottler;
- use Magento\Framework\Exception\AuthenticationException;
- use Magento\Framework\Event\ManagerInterface;
- /**
- * @inheritdoc
- */
- class CustomerTokenService implements \Magento\Integration\Api\CustomerTokenServiceInterface
- {
- /**
- * Token Model
- *
- * @var TokenModelFactory
- */
- private $tokenModelFactory;
- /**
- * @var Magento\Framework\Event\ManagerInterface
- */
- private $eventManager;
- /**
- * Customer Account Service
- *
- * @var AccountManagementInterface
- */
- private $accountManagement;
- /**
- * @var \Magento\Integration\Model\CredentialsValidator
- */
- private $validatorHelper;
- /**
- * Token Collection Factory
- *
- * @var TokenCollectionFactory
- */
- private $tokenModelCollectionFactory;
- /**
- * @var RequestThrottler
- */
- private $requestThrottler;
- /**
- * Initialize service
- *
- * @param TokenModelFactory $tokenModelFactory
- * @param AccountManagementInterface $accountManagement
- * @param TokenCollectionFactory $tokenModelCollectionFactory
- * @param \Magento\Integration\Model\CredentialsValidator $validatorHelper
- * @param \Magento\Framework\Event\ManagerInterface $eventManager
- */
- public function __construct(
- TokenModelFactory $tokenModelFactory,
- AccountManagementInterface $accountManagement,
- TokenCollectionFactory $tokenModelCollectionFactory,
- CredentialsValidator $validatorHelper,
- ManagerInterface $eventManager = null
- ) {
- $this->tokenModelFactory = $tokenModelFactory;
- $this->accountManagement = $accountManagement;
- $this->tokenModelCollectionFactory = $tokenModelCollectionFactory;
- $this->validatorHelper = $validatorHelper;
- $this->eventManager = $eventManager ?: \Magento\Framework\App\ObjectManager::getInstance()
- ->get(ManagerInterface::class);
- }
- /**
- * @inheritdoc
- */
- public function createCustomerAccessToken($username, $password)
- {
- $this->validatorHelper->validate($username, $password);
- $this->getRequestThrottler()->throttle($username, RequestThrottler::USER_TYPE_CUSTOMER);
- try {
- $customerDataObject = $this->accountManagement->authenticate($username, $password);
- } catch (\Exception $e) {
- $this->getRequestThrottler()->logAuthenticationFailure($username, RequestThrottler::USER_TYPE_CUSTOMER);
- throw new AuthenticationException(
- __(
- 'The account sign-in was incorrect or your account is disabled temporarily. '
- . 'Please wait and try again later.'
- )
- );
- }
- $this->eventManager->dispatch('customer_login', ['customer' => $customerDataObject]);
- $this->getRequestThrottler()->resetAuthenticationFailuresCount($username, RequestThrottler::USER_TYPE_CUSTOMER);
- return $this->tokenModelFactory->create()->createCustomerToken($customerDataObject->getId())->getToken();
- }
- /**
- * Revoke token by customer id.
- *
- * The function will delete the token from the oauth_token table.
- *
- * @param int $customerId
- * @return bool
- * @throws \Magento\Framework\Exception\LocalizedException
- */
- public function revokeCustomerAccessToken($customerId)
- {
- $tokenCollection = $this->tokenModelCollectionFactory->create()->addFilterByCustomerId($customerId);
- if ($tokenCollection->getSize() == 0) {
- throw new LocalizedException(__('This customer has no tokens.'));
- }
- try {
- foreach ($tokenCollection as $token) {
- $token->delete();
- }
- } catch (\Exception $e) {
- throw new LocalizedException(__("The tokens couldn't be revoked."));
- }
- return true;
- }
- /**
- * Get request throttler instance
- *
- * @return RequestThrottler
- * @deprecated 100.0.4
- */
- private function getRequestThrottler()
- {
- if (!$this->requestThrottler instanceof RequestThrottler) {
- return \Magento\Framework\App\ObjectManager::getInstance()->get(RequestThrottler::class);
- }
- return $this->requestThrottler;
- }
- }
|