public function indexAction()
 {
     if (Praxigento_LoginAs_Config::cfgGeneralEnabled()) {
         /** define operator name */
         /** @var $session Mage_Admin_Model_Session */
         $session = Mage::getSingleton('admin/session');
         if ($session->isLoggedIn()) {
             /** @var $user Mage_Admin_Model_User */
             $user = $session->getUser();
             $operator = $user->getName() . ' (' . $user->getEmail() . ')';
             /** if there is customer data in request */
             if (!is_null($this->getRequest()->getParams())) {
                 $params = $this->getRequest()->getParams();
                 if (!is_null($params[Praxigento_LoginAs_Config::REQ_PARAM_LAS_ID])) {
                     /** extract customer ID from request and load customer data */
                     $customerId = $params[Praxigento_LoginAs_Config::REQ_PARAM_LAS_ID];
                     /** @var $customer Mage_Customer_Model_Customer */
                     $customer = Mage::getModel('customer/customer')->load($customerId);
                     if ($customer->getId() == $customerId) {
                         $customerName = $customer->getName();
                         /** define URL to login to customer's website */
                         $wsId = $customer->getData('website_id');
                         if (is_null($wsId)) {
                             $wsId = Mage::app()->getStore()->getWebsiteId();
                         }
                         /** @var $website Mage_Core_Model_Website */
                         $website = Mage::getModel('core/website')->load($wsId);
                         $defStoreId = $website->getDefaultStore()->getId();
                         $baseTarget = Mage::getStoreConfig(Mage_Core_Model_Url::XML_PATH_SECURE_URL, $defStoreId);
                         $baseSource = Mage::getStoreConfig(Mage_Core_Model_Url::XML_PATH_SECURE_URL);
                         /** compose redirection URL and replace current base by target base */
                         $urlModel = Mage::getModel('core/url');
                         $store = Mage::getModel('core/store')->load($defStoreId);
                         $urlModel->setStore($store);
                         $url = $urlModel->getUrl(Praxigento_LoginAs_Config::XMLCFG_ROUTER_FRONT . Praxigento_LoginAs_Config::ROUTE_CUSTOMER_LOGINAS);
                         $url = str_replace($baseSource, $baseTarget, $url);
                         /** compose authentication package */
                         /** @var $authPack Praxigento_LoginAs_Model_Package */
                         $authPack = Mage::getSingleton('prxgt_lgas_model/package');
                         $authPack->setAdminName($operator);
                         $authPack->setCustomerId($customerId);
                         $authPack->setCustomerName($customerName);
                         $authPack->setRedirectUrl($url);
                         $validatorData = $session->getValidatorData();
                         $ip = $validatorData['remote_addr'];
                         $authPack->setIp($ip);
                         /** save login data to file */
                         $authPack->saveAsFile();
                         /** log event */
                         $log = Praxigento_LoginAs_Model_Logger::getLogger($this);
                         $log->trace("Operator '{$operator}' is redirected to front from ip '{$ip}' to login" . " as customer '{$customerName}' ({$customerId}).");
                     }
                     $bu = var_export($this->getLayout()->getUpdate()->getHandles(), true);
                     /** load layout and render blocks */
                     $this->loadLayout()->renderLayout();
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * Internal dispatcher for the called log method.
  * @param $message
  * @param $throwable
  * @param $log4phpMethod
  * @param $zendLevel
  */
 private function doLog($message, $throwable, $log4phpMethod, $zendLevel)
 {
     if (Praxigento_LoginAs_Config::cfgGeneralLogEvents()) {
         if (self::$_isLog4phpUsed) {
             $this->_loggerLog4php->{$log4phpMethod}($message, $throwable);
         } else {
             Mage::log($this->_name . ': ' . $message, $zendLevel);
             if ($throwable instanceof Exception) {
                 Mage::logException($throwable);
             }
         }
     }
 }
Exemplo n.º 3
0
 protected function _isAllowed()
 {
     $result = Praxigento_LoginAs_Config::canAccessLoginAs();
     return $result;
 }
Exemplo n.º 4
0
 /**
  * Add new column to orders grid.
  * @param Mage_Adminhtml_Block_Sales_Order_Grid $grid
  */
 private function doOrderGridColumnAdd(Mage_Adminhtml_Block_Sales_Order_Grid $grid)
 {
     /** validate availability & permissions */
     if (Praxigento_LoginAs_Config::cfgUiOrdersGridColumnEnabled() && Praxigento_LoginAs_Config::canAccessCreatedBy()) {
         /** define position for the column */
         $pos = Praxigento_LoginAs_Config::cfgUiOrdersGridColumnPosition();
         $curr = 0;
         $after = $grid->getLastColumnId();
         foreach ($grid->getColumns() as $key => $value) {
             $after = $key;
             if (++$curr >= $pos) {
                 break;
             }
         }
         /** add new column to grid */
         $grid->addColumnAfter(Praxigento_LoginAs_Config::ATTR_ORDER_CREATED_BY, array('header' => Praxigento_LoginAs_Config::helper()->__('Created by'), 'index' => Praxigento_LoginAs_Config::ATTR_ORDER_CREATED_BY, 'type' => 'text'), $after);
         $grid->sortColumnsByOrder();
     }
 }
Exemplo n.º 5
0
 /**
  * Test default accessors for basic Magento components.
  */
 public function test_defaults()
 {
     $helper = Praxigento_LoginAs_Config::helper();
     $this->assertTrue($helper instanceof Mage_Core_Helper_Abstract);
 }