Jump to content

PS 8.2 : redirection après logout montre toutes les commandes sans compte client


Recommended Posts

Bonjour,

Après migration d'un prestashop 1.7 vers un 8.2, nous avons de multiples problèmes qu'il est étrange que nous ayons à corriger.

Le dernier en date : 

  1. Je me connecte et me place sur ma liste de commande (page "historique-commandes") : je vois les commandes associées à mon profil
  2. Je clique sur le lien "me déconnecter" en haut du site
  3. La page de liste des commandes est toujours affichée (c'est déjà étrange) mais en plus toutes les commandes de tous les clients qui n'ont pas de compte sont alors visibles... Vraiment pas idéal pour la confidentialité.
  4. D'ailleurs, la page "mon-compte" et tous ses liens reste ouvrable, par appel de son url, alors que je ne suis pas connecté.

Est ce un problème rencontré par certain(e)s et y'a t-il un contournement possible sans modifier le code prestashop ?

 

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

oui, vous avez raison. Nous avons énormément de souci après migration. Là, je complète par exemple le fichier controllers/front/HistoryController.php avec le code 

if (!$this->context->customer->isLogged()) {
    Tools::redirect('index.php?controller=authentication');
}

dans la méthode "init content". C'est incroyable d'avoir à faire ça, il me semble...

Link to comment
Share on other sites

Normalement (anciennement) c'était géré directement par le controller front si il possédait la propriété  auth = true.

        if($this->auth && !$this->context->customer->isLogged($this->guestAllowed)) {
            Tools::redirect('index.php?controller=authentication'
                .($this->authRedirection ? '&back='.$this->authRedirection : ''));
        }


 

Link to comment
Share on other sites

Merci @doekia . Tu me conseilles donc de mettre le code joint plutot que le mien dans les différents controller ?

Parce que par exemple, la page "mon compte" et la page "reduction" ca fait pareil : je vois plein de coupons clients alors que je ne suis pas connecté !

Link to comment
Share on other sites

Non le code est dans le FrontController et chaque controleur "privé" ont la propriété $this->auth à true
 

Exemple

class HistoryControllerCore extends FrontController
{
    public $ssl = true;
    public $auth = true;
    public $php_self = 'history';
    public $authRedirection = 'history';

Donc tu ne devrais pas avoir a rajouter ton test normalement
 

Link to comment
Share on other sites

je n'avais pas compris,  désolé. Effectivement, les propriétés publiques présentes dans "controllers/front/HistoryController.php " sont bien :

    /** @var bool */
    public $auth = true;
    /** @var string */
    public $php_self = 'history';
    /** @var string */
    public $authRedirection = 'history';
    /** @var bool */
    public $ssl = true;
    /** @var OrderPresenter|null */
    public $order_presenter;

Mais malgré ce, y'a comme un os !

Link to comment
Share on other sites

ainsi, le code de la méthode "initcontent" de ce même fichier est juste

    /**
     * Assign template vars related to page content.
     *
     * @see FrontController::initContent()
     */
    public function initContent()
    {
         if (Configuration::isCatalogMode()) {
            Tools::redirect('index.php');
        }

        if ($this->order_presenter === null) {
            $this->order_presenter = new OrderPresenter();
        }

        if (Tools::isSubmit('slowvalidation')) {
            $this->warning[] = $this->trans('If you have just placed an order, it may take a few minutes for it to be validated. Please refresh this page if your order is missing.', [], 'Shop.Notifications.Warning');
        }

        $this->context->smarty->assign([
            'orders' => $this->getTemplateVarOrders(),
        ]);

        parent::initContent();
        $this->setTemplate('customer/history');
    }

Il ne tient donc pas compte de la propriété auth... C'est pourtant le fichier de base de prestashop 8.2.1 que j'ai downloadé depuis le site internet prestashop !

 

Link to comment
Share on other sites

le code est toujours présent dans Classes/FrontController.php, fonction init()

https://github.com/PrestaShop/PrestaShop/blob/develop/classes/controller/FrontController.php#L277

        // Redirect user to login page, if the controller requires authentication
        if ($this->auth && !$this->context->customer->isLogged()) {
            Tools::redirect($this->context->link->getPageLink(
                'authentication',
                null,
                null,
                $this->authRedirection ? ['back' => $this->authRedirection] : null
            ));
        }

Vous n'auriez pas un override de ce fichier ?

Link to comment
Share on other sites

Posted (edited)

pardon pour le délai de ma réponse et merci pour votre post. Si override il y a, il est à l'insu de mon plein grès !

Quand on télécharge la version 8.2.1 à partir de ce lien (c'est ce que nous avons fait) : https://github.com/PrestaShop/PrestaShop/releases/download/8.2.1/prestashop_8.2.1.zip

On a une version pour laquelle il n'y a pas le code qui va bien (par exemple pour le discountcontroller.php)

Je fais une erreur en téléchargeant cette version de prestashop ou en téléchargeant depuis cet endroit ?

Nous n'avons pas eu que cette erreur d'ailleurs et avons eu à corriger tout un tas de trucs qu'il était vraiment étrange d'avoir à corriger tellement les bugs étaient faciles à obtenir (ex : l'ajout au panier deffectueux)

 

Edited by Damien Forner (see edit history)
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...