Les symptômes sont frustrants : on se connecte au back-office et Prestahop ré-affiche le formulaire de connexion sans aucuns messages d’erreur.

Le problème vient du fait que Prestashop vérifie l’intégrité du cookie en vérifiant l’ip du serveur à partir du nom de domaine. Il est possible que pour diverses raisons, cette vérification échoue. Pour accéder de nouveau back office normalement, il faut modifier le Core de Prestashop (Boo c’est mal), à savoir Employee::isLoggedBack dans le fichier classes/Employee.php :

/* classes/Employee.php */

public function isLoggedBack()
{
    if(!Cache::isStored('isLoggedBack' . $this->id)) {
        /* Employee is valid only if it can be load and if
        cookie password is the same as database one */
        $result = (
            $this->id
            && Validate::isUnsignedId($this->id)
            && Employee::checkPassword($this->id, Context::getContext()->cookie->passwd)
            /*&& (
                !isset(Context::getContext()->cookie->remote_addr)
                || Context::getContext()->cookie->remote_addr == ip2long(Tools::getRemoteAddr())
                || !Configuration::get('PS_COOKIE_CHECKIP'))*/
        );
        Cache::store('isLoggedBack' . $this->id, $result);

        return $result;
    }

    return Cache::retrieve('isLoggedBack' . $this->id);
}

Il suffit de commenter la condition qui vérifie l’ip du nom de domaine.