Example #1
0
 /**
  * Redirect to allowed store with Geoip
  *
  * @param Varien_Object $observer
  *
  * @return void
  */
 public function redirectStore(Varien_Event_Observer $observer)
 {
     $enabled = Mage::getStoreConfigFlag('geoip/general/enabled');
     $lockStore = Mage::getStoreConfigFlag('geoip/general/lock');
     $exceptions = $this->_getExceptions();
     $fallbackStore = $this->_getFallbackStore();
     if (!$enabled) {
         return;
     }
     $this->checkNoRoute();
     $geoIP = Mage::getSingleton('geoip/country');
     $currentCountry = $geoIP->getCountry();
     $response = Mage::app()->getResponse();
     $session = Mage::getSingleton('core/session');
     $result = new Varien_Object(array('should_proceed' => 1));
     Mage::dispatchEvent('wh_geoip_redirect_store_before', array('result' => $result));
     if (!$result->getShouldProceed()) {
         return;
     }
     if ($this->_validateException($exceptions)) {
         return;
     }
     if ($geoIP->isCountryAllowed($currentCountry)) {
         $session->setIsGeoipRedirected(true);
         return;
     }
     $result = new Varien_Object(array('locked_store' => $lockStore));
     Mage::dispatchEvent('wh_geoip_redirect_store_check_locked_before', array('result' => $result));
     // Only redirect once per session if lock is not enabled
     if (!$result->getLockedStore() && $session->getIsGeoipRedirected()) {
         return;
     }
     // If locked mode is on and country is not in allowed countries: Don't
     // redirect when we are on fallback store.
     if ($result->getLockedStore() && $session->getNotInAllowedList() && Mage::app()->getStore()->getId() == $fallbackStore->getId()) {
         return;
     }
     $store = $this->_getStoreForCountry($currentCountry);
     if (!$store) {
         $store = $fallbackStore;
         $session->setNotInAllowedList(true);
     }
     $event = new Varien_Object(array('store_url' => $store->getCurrentUrl(false)));
     Mage::dispatchEvent('wh_geoip_redirect_store_set_redirect_before', array('result' => $event));
     $session->setIsGeoipRedirected(true);
     $response->setRedirect($event->getStoreUrl())->sendResponse();
     exit;
 }
Example #2
0
 /**
  * checks to for a store's "punchout only" restricted access flag
  *
  * @param Varien_Event_Observer $observer
  */
 public function checkForPunchoutOnlySite(Varien_Event_Observer $observer)
 {
     if (self::$_inSessionEvent == 1) {
         return;
     }
     self::$_inSessionEvent = 1;
     /**
      * @var $helper Vbw_Punchout_Helper_Config
      * @var $poSession Vbw_Punchout_Model_Session
      * @var $response Mage_Core_Controller_Response_Http
      */
     // $session = $observer->getEvent()->getCustomerSession();
     $request = Mage::app()->getRequest();
     $helper = Mage::helper('vbw_punchout/config');
     $poOnly = $helper->getConfig('site/punchout_only');
     $poSession = Mage::getSingleton("vbw_punchout/session");
     $action = Mage::app()->getFrontController()->getAction();
     $response = $action->getResponse();
     if ($poOnly == 1 && $poSession->getPunchoutId() == false && $action->getRequest()->getQuery('nopotest') != 1) {
         $result = new Varien_Object();
         $result->setShouldProceed(true);
         Mage::dispatchEvent('punchoutonly_restriction', array('controller' => $action, 'result' => $result));
         if ($result->getShouldProceed()) {
             //$module_name = strtolower($request->getControllerModule());
             //if ($module_name == 'vbw_punchout') {
             //    $result->setShouldProceed(false);
             //}
             self::$_inSessionEvent = 0;
             $url = $helper->getConfig('site/punchout_only_url');
             $response->setRedirect(Mage::getUrl($url, array('_query' => "nopotest=1")));
             $response->sendResponse();
         }
     }
     self::$_inSessionEvent = 0;
 }
 /**
  * Implement website stub or private sales restriction
  *
  * @param Varien_Event_Observer $observer
  */
 public function restrictWebsite($observer)
 {
     /* @var $controller Mage_Core_Controller_Front_Action */
     $controller = $observer->getEvent()->getControllerAction();
     if (!Mage::app()->getStore()->isAdmin()) {
         $dispatchResult = new Varien_Object(array('should_proceed' => true, 'customer_logged_in' => false));
         Mage::dispatchEvent('websiterestriction_frontend', array('controller' => $controller, 'result' => $dispatchResult));
         if (!$dispatchResult->getShouldProceed()) {
             return;
         }
         if (!Mage::helper('enterprise_websiterestriction')->getIsRestrictionEnabled()) {
             return;
         }
         /* @var $request Mage_Core_Controller_Request_Http */
         $request = $controller->getRequest();
         /* @var $response Mage_Core_Controller_Response_Http */
         $response = $controller->getResponse();
         switch ((int) Mage::getStoreConfig(Enterprise_WebsiteRestriction_Helper_Data::XML_PATH_RESTRICTION_MODE)) {
             // show only landing page with 503 or 200 code
             case Enterprise_WebsiteRestriction_Model_Mode::ALLOW_NONE:
                 if ($controller->getFullActionName() !== 'restriction_index_stub') {
                     $request->setModuleName('restriction')->setControllerName('index')->setActionName('stub')->setDispatched(false);
                     return;
                 }
                 $httpStatus = (int) Mage::getStoreConfig(Enterprise_WebsiteRestriction_Helper_Data::XML_PATH_RESTRICTION_HTTP_STATUS);
                 if (Enterprise_WebsiteRestriction_Model_Mode::HTTP_503 === $httpStatus) {
                     $response->setHeader('HTTP/1.1', '503 Service Unavailable');
                 }
                 break;
             case Enterprise_WebsiteRestriction_Model_Mode::ALLOW_REGISTER:
                 // break intentionally omitted
                 // redirect to landing page/login
             // break intentionally omitted
             // redirect to landing page/login
             case Enterprise_WebsiteRestriction_Model_Mode::ALLOW_LOGIN:
                 if (!$dispatchResult->getCustomerLoggedIn() && !Mage::helper('customer')->isLoggedIn()) {
                     // see whether redirect is required and where
                     $redirectUrl = false;
                     $allowedActionNames = array_keys(Mage::getConfig()->getNode(Enterprise_WebsiteRestriction_Helper_Data::XML_NODE_RESTRICTION_ALLOWED_GENERIC)->asArray());
                     if (Mage::helper('customer')->isRegistrationAllowed()) {
                         foreach (array_keys(Mage::getConfig()->getNode(Enterprise_WebsiteRestriction_Helper_Data::XML_NODE_RESTRICTION_ALLOWED_REGISTER)->asArray()) as $fullActionName) {
                             $allowedActionNames[] = $fullActionName;
                         }
                     }
                     // to specified landing page
                     $restrictionRedirectCode = (int) Mage::getStoreConfig(Enterprise_WebsiteRestriction_Helper_Data::XML_PATH_RESTRICTION_HTTP_REDIRECT);
                     if (Enterprise_WebsiteRestriction_Model_Mode::HTTP_302_LANDING === $restrictionRedirectCode) {
                         $cmsPageViewAction = 'cms_page_view';
                         $allowedActionNames[] = $cmsPageViewAction;
                         $pageIdentifier = Mage::getStoreConfig(Enterprise_WebsiteRestriction_Helper_Data::XML_PATH_RESTRICTION_LANDING_PAGE);
                         // Restrict access to CMS pages too
                         if (!in_array($controller->getFullActionName(), $allowedActionNames) || $controller->getFullActionName() === $cmsPageViewAction && $request->getAlias('rewrite_request_path') !== $pageIdentifier) {
                             $redirectUrl = Mage::getUrl('', array('_direct' => $pageIdentifier));
                         }
                     } elseif (!in_array($controller->getFullActionName(), $allowedActionNames)) {
                         // to login form
                         $redirectUrl = Mage::getUrl('customer/account/login');
                     }
                     if ($redirectUrl) {
                         $response->setRedirect($redirectUrl);
                         $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
                     }
                     if (Mage::getStoreConfigFlag(Mage_Customer_Helper_Data::XML_PATH_CUSTOMER_STARTUP_REDIRECT_TO_DASHBOARD)) {
                         $afterLoginUrl = Mage::helper('customer')->getDashboardUrl();
                     } else {
                         $afterLoginUrl = Mage::getUrl();
                     }
                     Mage::getSingleton('core/session')->setWebsiteRestrictionAfterLoginUrl($afterLoginUrl);
                 } elseif (Mage::getSingleton('core/session')->hasWebsiteRestrictionAfterLoginUrl()) {
                     $response->setRedirect(Mage::getSingleton('core/session')->getWebsiteRestrictionAfterLoginUrl(true));
                     $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
                 }
                 break;
         }
     }
 }
Example #4
0
 /**
  * Implement website stub or private sales restriction
  *
  * @param Varien_Event_Observer $observer
  */
 public function restrictWebsite($observer)
 {
     /* @var $controller Mage_Core_Controller_Front_Action */
     $controller = $observer->getEvent()->getControllerAction();
     if (!Mage::app()->getStore()->isAdmin()) {
         $dispatchResult = new Varien_Object(array('should_proceed' => true));
         Mage::dispatchEvent('websiterestriction_frontend', array('controller' => $controller, 'result' => $dispatchResult));
         if (!$dispatchResult->getShouldProceed()) {
             return;
         }
         if (!(int) Mage::getStoreConfig('general/restriction/is_active')) {
             return;
         }
         /* @var $request Mage_Core_Controller_Request_Http */
         $request = $controller->getRequest();
         /* @var $response Mage_Core_Controller_Response_Http */
         $response = $controller->getResponse();
         switch ((int) Mage::getStoreConfig('general/restriction/mode')) {
             // show only landing page with 503 or 200 code
             case Enterprise_WebsiteRestriction_Model_Mode::ALLOW_NONE:
                 if ($controller->getFullActionName() !== 'restriction_index_stub') {
                     $request->setModuleName('restriction')->setControllerName('index')->setActionName('stub')->setDispatched(false);
                     return;
                 }
                 if (Enterprise_WebsiteRestriction_Model_Mode::HTTP_503 === (int) Mage::getStoreConfig('general/restriction/http_status')) {
                     $response->setHeader('HTTP/1.1', '503 Service Unavailable');
                 }
                 break;
             case Enterprise_WebsiteRestriction_Model_Mode::ALLOW_REGISTER:
                 // break intentionally omitted
                 // redirect to landing page/login
             // break intentionally omitted
             // redirect to landing page/login
             case Enterprise_WebsiteRestriction_Model_Mode::ALLOW_LOGIN:
                 if (!Mage::helper('customer')->isLoggedIn()) {
                     // see whether redirect is required and where
                     $redirectUrl = false;
                     $allowedActionNames = array_keys(Mage::getConfig()->getNode('frontend/enterprise/websiterestriction/full_action_names/generic')->asArray());
                     if (Mage::helper('customer')->isRegistrationAllowed()) {
                         foreach (array_keys(Mage::getConfig()->getNode('frontend/enterprise/websiterestriction/full_action_names/register')->asArray()) as $fullActionName) {
                             $allowedActionNames[] = $fullActionName;
                         }
                     }
                     // to specified landing page
                     if (Enterprise_WebsiteRestriction_Model_Mode::HTTP_302_LANDING === (int) Mage::getStoreConfig('general/restriction/http_redirect')) {
                         $allowedActionNames[] = 'cms_page_view';
                         $pageIdentifier = Mage::getStoreConfig('general/restriction/cms_page');
                         if (!in_array($controller->getFullActionName(), $allowedActionNames) || $request->getParam('page_id') === $pageIdentifier) {
                             $redirectUrl = Mage::getUrl('', array('_direct' => $pageIdentifier));
                         }
                     } elseif (!in_array($controller->getFullActionName(), $allowedActionNames)) {
                         $redirectUrl = Mage::getUrl('customer/account/login');
                     }
                     if ($redirectUrl) {
                         $response->setRedirect($redirectUrl);
                         $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
                     }
                     if (Mage::getStoreConfigFlag('customer/startup/redirect_dashboard')) {
                         $afterLoginUrl = Mage::helper('customer')->getDashboardUrl();
                     } else {
                         $afterLoginUrl = Mage::getUrl();
                     }
                     Mage::getSingleton('core/session')->setWebsiteRestrictionAfterLoginUrl($afterLoginUrl);
                 } elseif (Mage::getSingleton('core/session')->hasWebsiteRestrictionAfterLoginUrl()) {
                     $response->setRedirect(Mage::getSingleton('core/session')->getWebsiteRestrictionAfterLoginUrl(true));
                     $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
                 }
                 break;
         }
     }
 }