Primero, debe hacer algunos cambios en la configuración.
Compartir cuentas de clientes entre múltiples sitios web
Debe configurar esta función aquí: System -> Configuration -> Customer Configuration -> Share Customer Accounts
.
Establezca esta configuración en Global para compartir cada cliente con todos los sitios web .
Compartir inicio de sesión entre sitios web
Para mantener la sesión al cambiar de tienda en un sitio web diferente , habilite "Usar SID en Frontend" en Sistema> Configuración> General> Web :
Forzar a los usuarios a redirigirse al mismo sitio web que tienen registrado
Inicio de sesión forzoso del cliente en el mismo sitio web que registraron cuando intentamos iniciar sesión desde otro sitio web.
Utilizar customer_login
Definir evento para config.xml
<?xml version="1.0"?>
<config>
<modules>
<Stackexchange_Magento165528>
<version>1.0.0</version>
</Stackexchange_Magento165528>
</modules>
<global>
<models>
<magento165528>
<class>Stackexchange_Magento165528_Model</class>
</magento165528>
</models>
<events>
<customer_login> <!-- identifier of the event we want to catch -->
<observers>
<customer_login_handler> <!-- identifier of the event handler -->
<type>singleton</type> <!-- class method call type; valid are model, object and singleton -->
<class>magento165528/observer</class> <!-- observers class alias -->
<method>redirectoSourceDomain</method> <!-- observer's method to be called -->
<args></args> <!-- additional arguments passed to observer -->
</customer_login_handler>
</observers>
</customer_login>
</events>
</global>
</config>
Clase de observador:
<?php
class Stackexchange_Magento165528_Model_Observer
{
public function redirectoSourceDomain(Varien_Event_Observer $observer)
{
$_customer = $observer->getEvent()->getCustomer();
/*
* Store of website from which website Customer have registered
*/
$_customer_resgister_store_id= $_customer->getStoreId();
if($_customer_resgister_store_id != Mage::app()->getStore()->getStoreId()){
$allStores=Mage::app()->getStores(); //get list of all stores,websites
foreach ($allStores as $_eachStoreId => $val){
$_storeId = Mage::app()->getStore($_eachStoreId)->getId();
//get url using store id
if($_customer_resgister_store_id == $_eachStoreId ){
$Websiteurl= Mage::app()->getStore($_storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
$_redirecUrl = $Websiteurl."customer/account/login?SID=".Mage::getModel("core/session")->getEncryptedSessionId();
/* Force redirect to repective Website */
Mage::app()->getFrontController()->getResponse()
->setRedirect($_redirecUrl)
->sendResponse();
exit;
}
}
}
return;
}
}
NOTA:
HE PROBADO ESTE CÓDIGO en MI SITIO WEB DE LA TIENDA DEMO DE MAGENTO.
Estos dos sitios web se ejecutan desde la misma instancia de magento utilizando el concepto de sitio web.