Jump to content

Garder la connexion client active entre les multi-boutiques


Recommended Posts

Bonjour à tous,

 

J'ai créé un prestashop en multi-boutique avec partage de clients.

Mais lorsqu'un client se connecte sur la boutique A, je souhaiterais qu'il n'ai pas besoin de se reconnecter sur la boutique B.

Qu'il soit connecté des deux côtés.

Que le partage de cookie se fasse entre les deux boutique ?

 

Avez-vous une idée ?

 

Merci d'avance !

Link to comment
Share on other sites

Bonjour,

 

j'ai le même besoin.

 

Pour PS 1.6.X cela se passe dans le fichier config/config.inc.php à la ligne 151.

if ($context->shop->getGroup()->share_order)
        $cookie = new Cookie('ps-sg'.$context->shop->getGroup()->id, '', $cookie_lifetime, $context->shop->getUrlsSharedCart(), false, $force_ssl);
    else
    {
        $domains = null;
        if ($context->shop->domain != $context->shop->domain_ssl)
          $domains = array($context->shop->domain_ssl, $context->shop->domain);

        $cookie = new Cookie('ps-s'.$context->shop->id, '', $cookie_lifetime, $domains, false, $force_ssl);
    }

On voit que le partage de Cookie se fait que si le mode partage de commande est actif dans un group de boutique.

 

j'ai rajouté ce bout de code en elsefi

    elseif($context->shop->getGroup()->share_customer)
        $cookie = new Cookie('ps-sgc'.$context->shop->getGroup()->id, '', $cookie_lifetime, $context->shop->getUrlsSharedGroup(), false, $force_ssl);

j'ai reécris une function qui renvoie l'ID des boutiques du groupe en question :

 
    public function getUrlsSharedGroup()
    {
        if (!$this->getGroup()->share_customer)
            return false;

        $query = new DbQuery();
        $query->select('domain');
        $query->from('shop_url');
        $query->where('main = 1');
        $query->where('active = 1');
        $query .= $this->addSqlRestrictionOverride(Shop::SHARE_CUSTOMER);
        $domains = array();
        foreach (Db::getInstance()->executeS($query) as $row)
            $domains[] = $row['domain'];

        return $domains;
    }
    /**
     * Add an sql restriction for shops fields
     *
     * @param int $share If false, dont check share datas from group. Else can take a Shop::SHARE_* constant value
     * @param string $alias
     */
    public static function addSqlRestrictionOverride($share = false, $alias = null)
    {
        if ($alias)
            $alias .= '.';

        $group = Shop::getGroupFromShop(Shop::getContextShopID(), false);
        /*if ($share == Shop::SHARE_CUSTOMER && Shop::getContext() == Shop::CONTEXT_SHOP && $group['share_customer'])
            $restriction = ' AND '.$alias.'id_shop_group = '.(int)Shop::getContextShopGroupID();
        else*/
            $restriction = ' AND '.$alias.'id_shop IN ('.implode(', ', Shop::getContextListShopID($share)).') ';

        return $restriction;
    }

Cela fonctionne, mais je n'ai pas pu test en profondeur. Merci de me retourner les problèmes.

 

Je suis en debuggage de ceci...

 

Si quelqu'un peut contribuer, ca serait sympa ;)

 

++

Edited by Myst26 (see edit history)
Link to comment
Share on other sites

Après des tests plus approfondi, le panier reste le même pour les deux boutiques. j'ai donc opté pour un autre moyen.

Il faut faut tout d'abord partager le compte des clients dans le groupe des boutiques.

 

Ensuite, il faut rajouter ce code code dans un fichier .js

 

 

$("#login_form").submit(function(e) {
e.preventDefault();
                         var $form = $(this);
                             email= $form.find("input[name='email']").val();
                             passwd = $form.find("input[name='passwd']").val();
$.ajax({
                          type: 'POST',
                          //url: baseDir + 'index.php?controller=authentication',
                          url: url_to_first_shop+'/index.php?controller=authentication',
                          data: {
                                'SubmitLogin_x': 'SubmitLogin',
                                'ajax': true,
                                'passwd' : passwd,
                                'email' : email
                            },
                          
                          dataType: 'json',
                          success: function(json) {
                          }
                        });
                       
                        $.ajax({
                          type: 'POST',
                          url:url_to_second_shop+'/index.php?controller=authentication',
                          data: {
                                'SubmitLogin_x': 'SubmitLogin',
                                'ajax': true,
                                'passwd' : passwd,
                                'email' : email
                            },
                          
                          dataType: 'json',
                          success: function(json) {
                           
                          }
                        });
 
 
});
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...