trucchi magentoCome sappiamo Magento Community (la versione base gratuita di Magento) non offre adeguati strumenti per la gestione della vendita B2B, tuttavia con un minimo sforzo possiamo inventare degli stratagemmi (non elegantissimi ma efficaci) per sopperire a questa mancanza, senza installare alcun plugin e senza andare a toccare il core del CMS (cosa importantissima per salvaguardare la salute della nostra piattaforma e far sì che possa essere aggiornata con facilità senza perdere le personalizzazioni).

In questo articolo abbiamo visto come realizzare uno store riservato agli utenti registrati (cioè come reindirizzare alla pagina di accesso tutti i navigatori non loggati), adesso andiamo a svelare un piccolo trucco per impedire a determinati gruppi di utenti di accedere ad un singolo store.

In un multi-store Magento gli utenti possono essere gestiti al livello globale (per tutti i negozi della piattaforma) oppure al livello di Store View (i permessi di ciascun utente sono validi solo all'interno di un singolo store). Se desideriamo che la registrazione dei nostri utenti sia valida su tutti i negozi della piattaforma ma vogliamo conservare dei settaggi particolari per alcuni gruppi di utenti al livello di ogni store (ad esempio prezzi speciali per il b2b) nessuna di queste due opzioni fa al nostro caso. Infatti nel passare da un negozio all'altro l'utente conserverebbe privilegi che non vogliamo concedergli all'interno di un diverso store.

La soluzione è molto semplice, basterà forzare il il logout per alcuni gruppi di utenti al di fuori dello store a loro riservato aggiungendo poche righe di codice al file head.phtml (percorso: app/design/frontend/your-design-package/default/page/html/ ). E' più facile a farsi che a spiegarsi:

 
      $_isLoggedIn = $this->helper('customer')->isLoggedIn();
      if($_isLoggedIn === true){
          $_myGroupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
          if($_myGroupId <> 1){
		      Mage::getSingleton('customer/session')->logout();             
          }
      }

Questo codice forza il logout per tutti gli utenti loggati appartenenti a un gruppo cliente diverso da General (Il gruppo utente general ha generalmente ID 1)

 
    $_isLoggedIn = $this->helper('customer')->isLoggedIn();
      if($_isLoggedIn === true){
          $_myGroupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
          if($_myGroupId == 1){
		      Mage::getSingleton('customer/session')->logout();             
          }
      }  

Questo codice forza il logout per tutti gli utenti loggati appartenenti al gruppo cliente General

 
      $_isLoggedIn = $this->helper('customer')->isLoggedIn();
      if($_isLoggedIn === true){
          $_myGroupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
          if($_myGroupId == 1 || $_myGroupId == 2){
		      Mage::getSingleton('customer/session')->logout();             
          }
      }

Questo codice forza il logout per tutti gli utenti loggati appartenenti ai gruppi clienti con ID 1 e 2.

Sulla falsariga di questi tre esempi è possibile adattare lo script alle esigenze della vostra piattaforma.

(L'articolo è stato scritto il 03/6/2013 e lo script è testato su Magento Community 1.7)

blog comments powered by Disqus