123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- namespace Dotdigitalgroup\Email\Controller\Email;
- class Accountcallback extends \Magento\Framework\App\Action\Action
- {
- /**
- * @var \Dotdigitalgroup\Email\Helper\Data
- */
- private $helper;
- /**
- * @var \Magento\Framework\Json\Helper\Data
- */
- private $jsonHelper;
- /**
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- private $storeManager;
- /**
- * @var \Dotdigitalgroup\Email\Model\Trial\TrialSetup
- */
- private $trialSetup;
- /**
- * @var \Magento\Framework\HTTP\PhpEnvironment\RemoteAddress
- */
- private $remoteAddress;
- /**
- * @var \Magento\Framework\Stdlib\DateTime\Timezone
- */
- private $timezone;
- /**
- * Accountcallback constructor.
- *
- * @param \Magento\Framework\App\Action\Context $context
- * @param \Dotdigitalgroup\Email\Helper\Data $helper
- * @param \Magento\Framework\Json\Helper\Data $jsonHelper
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param \Magento\Framework\HTTP\PhpEnvironment\RemoteAddress $remoteAddress
- * @param \Dotdigitalgroup\Email\Model\Trial\TrialSetup $trialSetup
- * @param \Magento\Framework\Stdlib\DateTime\Timezone $timezone
- */
- public function __construct(
- \Magento\Framework\App\Action\Context $context,
- \Dotdigitalgroup\Email\Helper\Data $helper,
- \Magento\Framework\Json\Helper\Data $jsonHelper,
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \Magento\Framework\HTTP\PhpEnvironment\RemoteAddress $remoteAddress,
- \Dotdigitalgroup\Email\Model\Trial\TrialSetup $trialSetup,
- \Magento\Framework\Stdlib\DateTime\Timezone $timezone
- ) {
- $this->timezone = $timezone;
- $this->helper = $helper;
- $this->jsonHelper = $jsonHelper;
- $this->storeManager = $storeManager;
- $this->remoteAddress = $remoteAddress;
- $this->trialSetup = $trialSetup;
- parent::__construct($context);
- }
- /**
- * Execute method.
- *
- * @return void
- */
- public function execute()
- {
- $params = $this->getRequest()->getParams();
- //if no value to any of the required params send error response
- if (empty($params['apiUser']) ||
- empty($params['pass']) ||
- empty($params['code']) ||
- ! $this->isCodeValid($params['code'])
- ) {
- $this->sendAjaxResponse(true);
- } else {
- $this->processAccountCallback($params);
- }
- }
- /**
- * @param array $params
- */
- private function processAccountCallback($params)
- {
- //Remove temporary passcode
- $this->helper->resourceConfig->deleteConfig(
- \Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_API_TRIAL_TEMPORARY_PASSCODE,
- 'default',
- 0
- );
- //Save api end point
- if (isset($params['apiEndpoint'])) {
- $this->trialSetup->saveApiEndPoint($params['apiEndpoint']);
- } else { //Save empty value to endpoint. New endpoint will be fetched when first api call made.
- $this->trialSetup->saveApiEndPoint('');
- }
- $apiConfigStatus = $this->trialSetup->saveApiCreds($params['apiUser'], $params['pass']);
- $dataFieldsStatus = $this->trialSetup->setupDataFields($params['apiUser'], $params['pass']);
- $addressBookStatus = $this->trialSetup->createAddressBooks($params['apiUser'], $params['pass']);
- $syncStatus = $this->trialSetup->enableSyncForTrial();
- if ($apiConfigStatus && $dataFieldsStatus && $addressBookStatus && $syncStatus) {
- $this->sendAjaxResponse(false);
- } else {
- $this->sendAjaxResponse(true);
- }
- }
- /**
- * Send ajax response.
- *
- * @param string $error
- * @param string $msg
- * @return void
- */
- private function sendAjaxResponse($error)
- {
- $message = [
- 'err' => $error
- ];
- $this->getResponse()
- ->setHeader('Content-type', 'application/javascript', true)
- ->setBody(
- 'signupCallback(' . $this->jsonHelper->jsonEncode($message) . ')'
- )
- ->sendResponse();
- }
- /**
- * Validate code
- *
- * @param string $code
- * @return bool
- */
- public function isCodeValid($code)
- {
- $now = $this->timezone->date()->format(\DateTime::ATOM);
- $expiryDateString = $this->helper->getWebsiteConfig(
- \Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_API_TRIAL_TEMPORARY_PASSCODE_EXPIRY
- );
- if ($now >= $expiryDateString) {
- return false;
- }
- $codeFromConfig = $this->helper->getWebsiteConfig(
- \Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_API_TRIAL_TEMPORARY_PASSCODE
- );
- return $codeFromConfig === $code;
- }
- }
|