protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) { $store = null; $disabled = false; if ($code = $this->getRequest()->getParam('store')) { $store = Mage::getModel('core/store')->load($code); } if ($store instanceof Mage_Core_Model_Store) { /* @var Nosto_Tagging_Helper_Account $accountHelper */ $accountHelper = Mage::helper('nosto_tagging/account'); /* @var NostoAccount $nostoAccount */ $nostoAccount = $accountHelper->find($store); if ($nostoAccount instanceof NostoAccountInterface) { foreach (NostoApiToken::getApiTokenNames() as $token) { if (!$nostoAccount->getApiToken($token)) { $disabled = true; break; } } } } if ($disabled === true) { /** @noinspection PhpUndefinedMethodInspection */ $element->setDisabled('disabled'); $metaOauth = new Nosto_Tagging_Model_Meta_Oauth(); /** @noinspection PhpUndefinedVariableInspection */ $metaOauth->loadData($store, $nostoAccount); $client = new NostoOAuthClient($metaOauth); $comment = sprintf('Your Nosto account is missing required tokens' . ' for updating settings to Nosto. Please click <a href="%s">' . ' here to re-connect</a> your account.', $client->getAuthorizationUrl()); $element->setData('comment', $comment); } return parent::_getElementHtml($element); }
/** * Redirects user to the Nosto OAuth 2 authorization server to fetch missing * scopes (API tokens) for an account. */ public function syncAccountAction() { $this->getResponse()->setHeader('Content-type', 'application/json', true); /** @var Nosto_Tagging_Helper_Account $accountHelper */ $accountHelper = Mage::helper('nosto_tagging/account'); $store = $this->getSelectedStore(); $account = !is_null($store) ? $accountHelper->find($store) : null; if ($this->getRequest()->isPost() && !is_null($store) && !is_null($account)) { /** @var Nosto_Tagging_Model_Meta_Oauth $meta */ $meta = new Nosto_Tagging_Model_Meta_Oauth(); $meta->loadData($store, $account); $client = new NostoOAuthClient($meta); $responseBody = array('success' => true, 'redirect_url' => $client->getAuthorizationUrl()); } if (!isset($responseBody)) { $responseBody = array('success' => false, 'redirect_url' => $accountHelper->getIframeUrl($store, $account, array('message_type' => NostoMessage::TYPE_ERROR, 'message_code' => NostoMessage::CODE_ACCOUNT_CONNECT))); } $this->getResponse()->setBody(json_encode($responseBody)); }
/** * Returns the meta data model needed for using the OAuth2 client included * in the Nosto SDk. * * @param Mage_Core_Model_Store $store the store to get the oauth meta data for.. * * @return Nosto_Tagging_Model_Meta_Oauth the meta data instance. */ public function getMetaData(Mage_Core_Model_Store $store) { $meta = new Nosto_Tagging_Model_Meta_Oauth(); $meta->loadData($store); return $meta; }