Привет! Я создал способ авторизации в качестве клиента.С помощью следующего решения, приведенного ниже, вы можете получить действие в представлении управления сеткой клиента в бэкэнде для каждого клиента:
Необходимо создать контроллер для внешнего интерфейса и выполнить переписывание классов административного блока.Ваша ситуация, и не забудьте создать xml-файл, который активирует ваш модуль в app / etc / modules / Yourmodule_Customer.xml. Вот config.xml модуля, который вам нужно будет создать:
<?xml version="1.0"?>
<config>
<modules>
<Yourmodule_Customer>
<version>0.1.0</version>
</Yourmodule_Customer>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite>
<customer_grid>Yourmodule_Customer_Block_Adminhtml_Overwrite_Grid</customer_grid>
</rewrite>
</adminhtml>
</global>
<frontend>
<routers>
<customer>
<args>
<modules>
<customer before="Mage_Customer">Yourmodule_Customer_Overwrite</customer>
</modules>
</args>
</customer>
</routers>
</frontend>
Затем вам нужно создать класс блоков в папке Youmodule / Customer / Block / Adminhtml / Overwrite / Grid.php со следующим содержимым: Имейте в виду, что если у вас активирован код магазина в URL, вам необходимо указать хранилище по умолчаниюкод.
<?php
class Yourmodule_Customer_Block_Adminhtml_Overwrite_Grid extends Mage_Adminhtml_Block_Customer_Grid
{
protected function _prepareColumns()
{
parent::_prepareColumns();
$column = $this->getColumn('action');
$actions = $column->getActions();
$actions[] = array(
'caption' => 'Log in',
'popup' => true,
'url' => array(
'base' => 'customer/support/autologin',
'params' => array('_store' => 'de', '_secure' => true)),
'field' => 'customerid'
);
$column->setActions( $actions );
return $this;
}
}
Затем необходимо создать новый контроллер внешнего интерфейса, в этом случае он ограничен авторизованным IP-адресом, определенным в конфигурации внутреннего интерфейса:
<?php
class Yourmodule_Customer_Overwrite_SupportController extends Mage_Core_Controller_Front_Action
{
public function preDispatch(){
parent::preDispatch();
if (!$this->getRequest()->isDispatched()) {
return;
}
$action = $this->getRequest()->getActionName();
$pattern = '/^(autologin)/i';
if (!preg_match($pattern, $action) && Mage::helper('core')->isDevAllowed(Mage::app()->getStore()->getId())) {
if (!$this->_getSession()->authenticate($this)) {
$this->setFlag('', 'no-dispatch', true);
}
} else {
$this->_getSession()->setNoReferer(true);
}
}
public function autologinAction(){
$session = $this->_getSession();
$id = (int) trim($this->getRequest()->getParam('customerid'));
try{
if($id){
$customer = Mage::getModel('customer/customer')->load($id);
$session->setCustomerAsLoggedIn($customer);
$message = $this->__('You are now logged in as %s', $customer->getName());
$session->addNotice($message);
Mage::log($message);
}else{
throw new Exception ($this->__('Auto Loggin didn\'t worked. Some parameter are missing'));
}
}catch (Exception $e){
$session->addError($e->getMessage());
}
$this->_redirect('customer/account');
}
public function _getSession(){
return Mage::getSingleton('customer/session');
}
}