![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/magento/module-adobe-ims/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\AdobeIms\Model; use Magento\AdobeImsApi\Api\FlushUserTokensInterface; use Magento\AdobeImsApi\Api\GetAccessTokenInterface; use Magento\AdobeImsApi\Api\LogOutInterface; use Magento\AdobeImsApi\Api\ConfigInterface; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\HTTP\Client\CurlFactory; use Psr\Log\LoggerInterface; /** * Represent functionality for log out users from the Adobe account */ class LogOut implements LogOutInterface { /** * Successful result code. */ private const HTTP_FOUND = 302; /** * @var LoggerInterface */ private $logger; /** * @var ConfigInterface */ private $config; /** * @var CurlFactory */ private $curlFactory; /** * @var GetAccessTokenInterface */ private $getAccessToken; /** * @var FlushUserTokensInterface */ private $flushUserTokens; /** * @param LoggerInterface $logger * @param ConfigInterface $config * @param CurlFactory $curlFactory * @param GetAccessTokenInterface $getAccessToken * @param FlushUserTokensInterface $flushUserTokens */ public function __construct( LoggerInterface $logger, ConfigInterface $config, CurlFactory $curlFactory, GetAccessTokenInterface $getAccessToken, FlushUserTokensInterface $flushUserTokens ) { $this->logger = $logger; $this->config = $config; $this->curlFactory = $curlFactory; $this->getAccessToken = $getAccessToken; $this->flushUserTokens = $flushUserTokens; } /** * @inheritDoc */ public function execute() : bool { try { $accessToken = $this->getAccessToken->execute(); if (empty($accessToken)) { return true; } $this->externalLogOut($accessToken); $this->flushUserTokens->execute(); return true; } catch (\Exception $exception) { $this->logger->critical($exception); return false; } } /** * Logout user from Adobe IMS * * @param string $accessToken * @throws LocalizedException */ private function externalLogOut(string $accessToken): void { $curl = $this->curlFactory->create(); $curl->addHeader('Content-Type', 'application/x-www-form-urlencoded'); $curl->addHeader('cache-control', 'no-cache'); $curl->post( $this->config->getLogoutUrl(), [ 'access_token' => $accessToken, 'client_secret' => $this->config->getPrivateKey(), 'client_id' => $this->config->getApiKey() ] ); if ($curl->getStatus() !== self::HTTP_FOUND) { throw new LocalizedException( __('An error occurred during logout operation.') ); } } }