Dans un Magento multi-sites multi-sites, j'aimerais forcer les utilisateurs à se connecter au même site Web qu'ils ont enregistré. Ils peuvent utiliser n'importe quel formulaire de connexion, dans n'importe quel site Web, mais le formulaire doit vérifier leurs informations d'identification et les rediriger vers le site Web approprié.
J'ai essayé de vérifier le site Web du client et je l'ai forcé à se connecter. Cela ne fonctionne pas très bien cependant. L'utilisateur est connecté au site Web actuel, pas à celui qu'il a enregistré.
Dans 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;
}
Des idées?
Réponses:
Tout d'abord, vous devez apporter quelques modifications au paramètre.
Partager des comptes clients entre plusieurs sites Web
Vous devez configurer cette fonction ici:
System -> Configuration -> Customer Configuration -> Share Customer Accounts
.Définissez ce paramètre sur Global pour partager chaque client sur tous les sites Web .
Partager la connexion entre les sites Web
Pour conserver la session lors du basculement entre les magasins sur un site Web différent , activez «Utiliser SID sur le frontend» dans Système> Configuration> Général> Web :
Forcer les utilisateurs à rediriger vers le même site Web qu'ils ont enregistré
Connexion forcée du client au même site Web qu'il a enregistré lorsque nous avons essayé de nous connecter à partir d'un autre site Web.
Utilisation
customer_login
Définissez l'événement sur config.xml
Classe d'observateur:
REMARQUE:
J'AI TESTÉ CE CODE SUR MES SITES WEB MAGENTO DEMO STORE.
Ces deux sites Web fonctionnent à partir de la même instance de Magento en utilisant le concept de site Web.
la source
vous pouvez réécrire la méthode ci-dessous pour vos besoins
réécrire sous la classe
Mage_Customer_Model_Session
setCustomerAsLoggedIn
méthodela source
Utilisez l'
customer_login
événement pour éviter de modifier / réécrire / remplacer les fichiers de base.Dans votre config.xml
Votre classe d'observateur (
/app/code/local/YourCompany/YourModule/Model/Observer.php
):Notez que vous devrez attribuer différents groupes de clients aux clients de différentes vues de magasin.
Vous pouvez également attribuer l'attribut client et les définir lors de l'inscription via un champ caché dans le formulaire d'inscription au lieu d'attribuer des groupes de clients.
la source