blog sur le développement web, jquery,css3, Magento, Symphony, php et bien d'autres choses

Ce script est maintenant totalement fonctionnel!

Pour ceux qui souhaitent, dans magento, pouvoir se connecter à la place d’un de leur client depuis l’admin , le code qui suit pourra fortement vous interesser. En effet il va vous permettre depuis l’administration de magento de vous connecter à la place de votre client afin de l’aider à résoudre un problème auquel il est confronté dans sa session, l’admin pourra ainsi l’aider plus efficacement.

public function connectAsAction() {

if (!Mage::getSingleton('admin/session') ->isAllowed('customer/connectas')) {

echo 'You are not allowed to connect as another user'; return;

}

$customerId = $this->getRequest()->getParam('id');

$customer = Mage::getModel('customer/customer') ->load($customerId);

if ($customer->getId() != $customerId) { echo 'User not found.'; return; }

$preferedStoreViewId = $customer->getPreferedStoreViewId();

if (!$preferedStoreViewId > 0) {

$customer->getWebsiteId();

$preferedStoreViewId = Mage::app() ->getWebsite($customer->getWebsiteId())

->getDefaultStore() ->getStoreId();

} session_write_close();

//Suppression du cookie 'frontend'

$params = session_get_cookie_params();

setcookie(
           'frontend', 
           '', 
           time() - 42000, 
           $params["path"], 
           $params["domain"], 
           $params["secure"], 
           $params["httponly"] 
         );

//Here we need to write on the session 
//corresponding to the frontend website 

session_regenerate_id(); 
session_name('frontend'); 
session_start(); 

$customer->setPreferedStoreViewId($preferedStoreViewId); 

//We set the customer and its store view 
Mage::app()->setCurrentStore( Mage::getModel('core/store') 
                  ->load($preferedStoreViewId) ); 
Mage::getSingleton('customer/session') 
                      ->setCustomerAsLoggedIn($customer); 

//We need to write data before continuing 
//in the normal magento process session_write_close();
//Redirect to the front on the specific store view 
$this->_redirectUrl(Mage::app() 
           ->getStore($preferedStoreViewId) 
           ->getBaseUrl()); 
}

Merci à Nicolas Bastien, chef de projet PHP à Lyon pour ce code.

Pour finir, si vous aussi vous rencontrez des problèmes de lenteurs sur votre boutique je vous conseil de jeter un oeil à cet article sur l’optimisation de Magento

Commentaires sur: "Magento connect as: se connecter en tant que client depuis l’admin" (9)

  1. CaPiT a dit:

    Le code est très intéressant mais peut être optimisé.

    On préférera les $session->addError(‘erreur’) aux echo, les $this->redirect(‘url’) à la place des return, puis la gestion des cookies peut se faire via des méthodes de Magento.

    Bonne continuation🙂

  2. […] Magento connect as: se connecter en tant que client depuis l’admin […]

  3. A noter aussi que ce code ne fonctionne pas si nous sommes sur des URL sécurisées SSL.

    Je suis en train de me pencher dessus. Je te fais signe si je trouve🙂

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s