En un Magento de varios sitios múltiples, me gustaría obligar a los usuarios a iniciar sesión en el mismo sitio web que han registrado. Pueden usar cualquier formulario de inicio de sesión, en cualquier sitio web, pero el formulario debe verificar sus credenciales y redirigirlas al sitio web correcto.
Traté de consultar el sitio web del cliente y obligarlo a iniciar sesión. Sin embargo, no funciona bastante bien. El usuario inicia sesión en el sitio web actual, no en el que está registrado.
En app / code / local / mage / Customer / Session.php
public function login($username, $password)
{
/**************************************************/
$customer = Mage::getModel("customer/customer");
$customer_website = null;
foreach (Mage::app()->getWebsites() as $website) {
$customer->setWebsiteId($website->getId());
$customer->loadByEmail($username);
//check if user exists
if($customer->getName()){
$customer_website = $website->getId();
}
}
/*************************************************/
$customer = Mage::getModel('customer/customer')->setWebsiteId($customer_website);
if ($customer->authenticate($username, $password)) {
$this->setCustomerAsLoggedIn($customer);
return true;
}
return false;
}
¿Algunas ideas?
magento-1.9
multistore
login
session
zekia
fuente
fuente
Respuestas:
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
Clase de observador:
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.
fuente
Puede reescribir el siguiente método para su requerimiento
reescribir debajo de la clase
Mage_Customer_Model_Session
setCustomerAsLoggedIn
métodofuente
Use el
customer_login
evento para evitar cambiar / reescribir / anular archivos principales.En su config.xml
Tu clase de observador (
/app/code/local/YourCompany/YourModule/Model/Observer.php
):Tenga en cuenta que tendrá que asignar diferentes grupos de clientes a clientes de diferentes vistas de la tienda.
También puede asignar un atributo de cliente y establecerlo durante el registro a través de un campo oculto en el formulario de registro en lugar de asignar grupos de clientes.
fuente