Studio.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. namespace Dotdigitalgroup\Email\Block\Adminhtml;
  3. use Dotdigitalgroup\Email\Model\Apiconnector\Client;
  4. /**
  5. * Automation studio block
  6. *
  7. * @api
  8. */
  9. class Studio extends \Magento\Backend\Block\Template
  10. {
  11. /**
  12. * Helper config.
  13. *
  14. * @var \Dotdigitalgroup\Email\Helper\Config
  15. */
  16. public $configFactory;
  17. /**
  18. * Helper.
  19. *
  20. * @var \Dotdigitalgroup\Email\Helper\Data
  21. */
  22. public $helper;
  23. /**
  24. * Mage auth model.
  25. *
  26. * @var \Magento\Backend\Model\Auth
  27. */
  28. public $auth;
  29. /**
  30. * Messenger.
  31. *
  32. * @var \Magento\Framework\Message\ManagerInterface
  33. */
  34. public $messageManager;
  35. /**
  36. * Apiconnector client.
  37. *
  38. * @var Client
  39. */
  40. private $client;
  41. /**
  42. * Studio constructor.
  43. *
  44. * @param \Magento\Backend\Model\Auth $auth
  45. * @param \Dotdigitalgroup\Email\Helper\Config $configFactory
  46. * @param \Dotdigitalgroup\Email\Helper\Data $dataHelper
  47. * @param \Magento\Backend\Block\Template\Context $context
  48. * @param Client $client
  49. */
  50. public function __construct(
  51. \Magento\Backend\Model\Auth $auth,
  52. \Dotdigitalgroup\Email\Helper\Config $configFactory,
  53. \Dotdigitalgroup\Email\Helper\Data $dataHelper,
  54. \Magento\Backend\Block\Template\Context $context,
  55. Client $client
  56. ) {
  57. $this->client = $client;
  58. $this->auth = $auth;
  59. $this->helper = $dataHelper;
  60. $this->configFactory = $configFactory;
  61. parent::__construct($context, []);
  62. }
  63. /**
  64. * Returns page header.
  65. *
  66. * @return \Magento\Framework\Phrase
  67. * @codeCoverageIgnore
  68. */
  69. public function getHeader()
  70. {
  71. return __('Automation');
  72. }
  73. /**
  74. * Returns URL for save action.
  75. *
  76. * @return string
  77. * @codeCoverageIgnore
  78. */
  79. public function getFormActionUrl()
  80. {
  81. return $this->getUrl('adminhtml/*/save');
  82. }
  83. /**
  84. * Returns website id.
  85. *
  86. * @return int
  87. * @codeCoverageIgnore
  88. */
  89. public function getWebsiteId()
  90. {
  91. return (int) $this->getRequest()->getParam('website');
  92. }
  93. /**
  94. * Returns store id.
  95. *
  96. * @return int
  97. * @codeCoverageIgnore
  98. */
  99. public function getStoreId()
  100. {
  101. return (int) $this->getRequest()->getParam('store');
  102. }
  103. /**
  104. * Returns inheritance text.
  105. *
  106. * @return \Magento\Framework\Phrase
  107. * @codeCoverageIgnore
  108. */
  109. public function getInheritText()
  110. {
  111. return __('Use Standard');
  112. }
  113. /**
  114. * User login url.
  115. *
  116. * @return string
  117. */
  118. public function getLoginUserHtml()
  119. {
  120. // authorize or create token.
  121. $token = $this->generateToken();
  122. $baseUrl = $this->configFactory
  123. ->getLogUserUrl();
  124. $loginuserUrl = $baseUrl . $token . '&suppressfooter=true';
  125. return $loginuserUrl;
  126. }
  127. /**
  128. * Generate new token and connect from the admin.
  129. *
  130. * @return string
  131. */
  132. public function generateToken()
  133. {
  134. $adminUser = $this->auth->getUser();
  135. $refreshToken = $adminUser->getRefreshToken();
  136. if ($refreshToken) {
  137. $accessToken = $this->client->getAccessToken(
  138. $this->configFactory->getTokenUrl(),
  139. $this->buildUrlParams(
  140. $this->helper->encryptor->decrypt($refreshToken)
  141. )
  142. );
  143. if (is_string($accessToken)) {
  144. return $accessToken;
  145. }
  146. }
  147. return false;
  148. }
  149. /**
  150. * @return string|null
  151. */
  152. public function getCode()
  153. {
  154. return $this->auth->getUser()->getEmailCode();
  155. }
  156. /**
  157. * Build url param.
  158. *
  159. * @param string $refreshToken
  160. *
  161. * @return string
  162. */
  163. public function buildUrlParams($refreshToken)
  164. {
  165. $params = 'client_id=' . $this->helper->getWebsiteConfig(
  166. \Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_CLIENT_ID
  167. )
  168. . '&client_secret=' . $this->helper->getWebsiteConfig(
  169. \Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_CLIENT_SECRET_ID
  170. )
  171. . '&refresh_token=' . $refreshToken . '&grant_type=refresh_token';
  172. return $params;
  173. }
  174. }