Em um Magento multi-site mutistore, gostaria de forçar os usuários a fazer login no mesmo site que eles registraram. Eles podem usar qualquer formulário de login, em qualquer site, mas o formulário deve verificar suas credenciais e redirecioná-las para o site correto.
Tentei verificar o site do cliente e forçá-lo a fazer login. Mas não está funcionando muito bem. O usuário é logado no site atual, não no que ele está registrado.
Em 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;
}
Alguma ideia?
magento-1.9
multistore
login
session
zekia
fonte
fonte
Respostas:
Primeiro, você precisa fazer algumas alterações na configuração.
Compartilhe contas de clientes entre vários sites
Você deve configurar esse recurso aqui:
System -> Configuration -> Customer Configuration -> Share Customer Accounts
.Faça essa configuração como Global para compartilhar todos os clientes com todos os sites .
Compartilhar login entre sites
Para manter a sessão ao alternar entre lojas em sites diferentes , ative "Usar SID no front-end" em Sistema> Configuração> Geral> Web :
Forçar os usuários a redirecionarem para o mesmo site que eles registraram
Forçosamente, faça o login do cliente no mesmo site que ele registrou quando tentamos fazer o login em outro site.
Usar
customer_login
Definir evento para config.xml
Classe de observador:
NOTA:
TENHO ESTE CÓDIGO EM MEUS WEBSITES DA LOJA DE MAGENTO DEMO.
Este site dois está sendo executado na mesma instância magento usando o conceito de site.
fonte
você pode reescrever o método abaixo para sua exigência
reescrever abaixo da aula
Mage_Customer_Model_Session
setCustomerAsLoggedIn
métodofonte
Use o
customer_login
evento para evitar alterar / reescrever / substituir arquivos principais.No seu config.xml
Sua classe de observador (
/app/code/local/YourCompany/YourModule/Model/Observer.php
):Observe que você terá que atribuir diferentes grupos de clientes a clientes com diferentes visualizações de loja.
Você também pode atribuir o atributo do cliente e defini-lo durante o registro através do campo oculto no formulário de registro, em vez de atribuir grupos de clientes.
fonte