* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PsAccounts\Account\CommandHandler; use PrestaShop\Module\PsAccounts\Account\Command\DeleteUserShopCommand; use PrestaShop\Module\PsAccounts\Account\Session\Firebase\OwnerSession; use PrestaShop\Module\PsAccounts\Account\Session\Firebase\ShopSession; use PrestaShop\Module\PsAccounts\Api\Client\AccountsClient; use PrestaShop\Module\PsAccounts\Context\ShopContext; use PrestaShop\Module\PsAccounts\Exception\RefreshTokenException; class DeleteUserShopHandler { /** * @var AccountsClient */ private $accountClient; /** * @var ShopContext */ private $shopContext; /** * @var ShopSession */ private $shopSession; /** * @var OwnerSession */ private $ownerSession; /** * @param AccountsClient $accountClient * @param ShopContext $shopContext * @param ShopSession $shopSession * @param OwnerSession $ownerSession */ public function __construct( AccountsClient $accountClient, ShopContext $shopContext, ShopSession $shopSession, OwnerSession $ownerSession ) { $this->accountClient = $accountClient; $this->shopContext = $shopContext; $this->shopSession = $shopSession; $this->ownerSession = $ownerSession; } /** * @param DeleteUserShopCommand $command * * @return array * * @throws RefreshTokenException */ public function handle(DeleteUserShopCommand $command) { return $this->shopContext->execInShopContext((int) $command->shopId, function () { $ownerToken = $this->ownerSession->getValidToken(); $shopToken = $this->shopSession->getValidToken(); return $this->accountClient->deleteUserShop( $ownerToken->getUuid(), $shopToken->getUuid(), $ownerToken->getJwt() ); }); } }