leakimd Posted January 10, 2020 Share Posted January 10, 2020 Bonjour, Je débute dans le développement de module. Je tente d'appeler une page du backOffice avec un clic dans mon getContent.tpl <a href="https://ZZZZZZZZZZZZZ/adminZZZZZZ/index.php/product/form/{$wish.id_product}" target="_blank">modifier l'article</a> Et comme vous pouvez l'imaginer je me retrouve sur une page d'erreur avec "Jeton (token) invalide: accéder à ce lien peut entraîner un éventuel problème de sécurité." Je peux passer l'erreur et tout marche bien. J'ai bien compris qu'il manque le jeton genre : ?_token=Kq60XnINRmNU5F7ZWkCow9OuLZ6vGq6pt-Lw64ECK Ou trouver cette valeur ??? J'ai cherché sur le forum mais j'ai pas trouver. Je suis sous Prestashop 1.7.4.3 Merci d'avance. Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 10, 2020 Share Posted January 10, 2020 Bonjour, peut être en générant le lien à partir de la fonction dédiée dans la classe Link. Link to comment Share on other sites More sharing options...
leakimd Posted January 10, 2020 Author Share Posted January 10, 2020 (edited) Merci de ta réponse, un bout de code serait le bienvenue. J'ai un peu avancé avec $admin_product_link = $this->context->link->getAdminLink('AdminProducts'); j'arrive a obtenir l'adresse avec un TOKEN du style : /admin/index.php/product/catalog?_token=nVaiDAVAD23sD6CdXsbh0Php2Hn2-bqU3xMWHtcvGy0 a5014a4995207d0e54ac4081bc743704 mais moi je voudrait arrivé sur mon article à modifier genre : admin/index.php/product/form/21?_token=nVaiDAVAD23sD6CdXsbh0Php2Hn2-bqU3xMWHtcvGy0 quelqu'un ???? Edited January 10, 2020 by leakimd (see edit history) Link to comment Share on other sites More sharing options...
joanny21260 Posted April 23, 2020 Share Posted April 23, 2020 bonjour avez vous trouvez la solution car j ai le même problème merci a vous Link to comment Share on other sites More sharing options...
fbenoist.com Posted April 24, 2020 Share Posted April 24, 2020 Le contrôleur produit utilise le composant route de Symfony. Donc il faut écrire en PHP dans un module un truc du genre : $sfContainer = SymfonyContainer::getInstance(); $url = $sfContainer->get('router')->generate( 'admin_product_form', ['id' => $id_product], UrlGeneratorInterface::ABSOLUTE_URL ); Sinon dans un template twig : <a href="{{ path('admin_product_form', {'id': product.id}) }}">{{ product.name }}</a> Link to comment Share on other sites More sharing options...
joanny21260 Posted April 24, 2020 Share Posted April 24, 2020 ok mais je mais sa ou Link to comment Share on other sites More sharing options...
fbenoist.com Posted April 24, 2020 Share Posted April 24, 2020 La question concerne le développement de module donc dans un module... Si vous ne savez pas développer un module PrestaShop, le lien vers la doc : https://devdocs.prestashop.com/1.7/modules/ Link to comment Share on other sites More sharing options...
Innocent1 Posted April 25, 2020 Share Posted April 25, 2020 fbenoist.com Ce problème n'est pas présent que pour les produits, il est présent pour tout le backoffice ( donc tout les liens contenant le paramètre _token dans le lien ) Donc je ne pense pas qu'un module puisse réglé ce soucis ( enfin pas un module visant la/les page(s) produit ) Dites-moi si je me trompe, mais en tout cas je ne suis pas persuader que ce soit la solution du coup... Merci Link to comment Share on other sites More sharing options...
fbenoist.com Posted April 25, 2020 Share Posted April 25, 2020 Le token est présent pour sécuriser le back-office contre les attaques de type CSRF. (https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/) Il n'est pas question de le retirer des liens, mais de disposer du bon token lors de la création de l'url. Il existe plusieurs solutions pour générer l'url. Ma proposition concerne uniquement la page produit. Pouvez-vous préciser votre problème ? Link to comment Share on other sites More sharing options...
Innocent1 Posted April 25, 2020 Share Posted April 25, 2020 Le problème: Lorsque je suis dans le backoffice de mon site et que j'essaie d'accéder aux différentes options présentes dans le menu de gauche, j'ai un message qui s'affiche ( voir image attaché ) Et cette erreur apparaît sur une majorité des liens du menu. Là, ce qui est vraiment problématique c'est bien entendu que je ne peut pas gérer les produits présent sur le site ( ne peut pas en ajouter, en modifier etc... car j'obtient toujours cette erreur et les modifications ne sont pas réellements prisent en compte malgré le message afficher sur Prestashop qui me dit l'inverse ) Il me faut parfois 4 à 5 tentatives pour pouvoir accéder à la page demander, et sur toutes mes tentatives seulement une m'a permis d'enregistrer un nouveau produit. ( ce qui est bien entendu très dérangeant quand on doit en mettre une centaine et que l'on doit tout refaire ) En activant le mode debug, j'obtient l'erreur suivante ( voir image attaché ) mais il me semble qu'elle ne m'informe pas vraiment plus, car si je l'ai bien comprise, elle me dit seulement ce que nous savons déjà: que le token n'est pas valide... Merci Link to comment Share on other sites More sharing options...
leakimd Posted April 25, 2020 Author Share Posted April 25, 2020 (edited) On 4/24/2020 at 1:06 AM, joanny21260 said: bonjour avez vous trouvez la solution car j ai le même problème merci a vous Oui, Désolé pour la réponse tardive. Bon mon dév. est parfois pas très catholique alors j’espère que ça vous ira. Pour la création de module dans mon fichier .php j'utilise ça : $admin_customer_link = $this->context->link->getAdminLink('AdminCustomers'); $this->context->smarty->assign('admin_customer_link', $admin_customer_link); et aprés dans mon .tpl j'utilise <a href= "{$admin_customer_link}&id_customer={$SearchNum}&viewcustomer" target="_blank"> Go User : {$SearchNum} </a> ça c'est pour accéder a une fiche client dans le BO la fonction getAdminLink() te donne un lien avec le token et le controlleur desiré ici index.php?controller=AdminCustomers&token=225dee5e9f32870e82f1809cb7408b71 et tu rajoute les id desiré ici &id_customer= et mon client $SearchNum et &viewcustomer pour aller sur la fiche après tu peux utiliser getAdminLink() avec le reste des contrôleur du BO ( 'AdminPaymentPreferences' , 'AdminOrders' pour les commandes, 'AdminProducts' pour les produits, Etc.... Un autre petit truc normalement tu peux aussi envoyé dans le template 'token'=>Tools::getAdminTokenLite('AdminProducts'), pour avoir ton token (marche pas a tout les coups chez moi) Voila j'espère que ça va t'aider Edited April 25, 2020 by leakimd (see edit history) Link to comment Share on other sites More sharing options...
Innocent1 Posted April 28, 2020 Share Posted April 28, 2020 fbenoist.com, Le code que vous avez fournis doit se trouvé dans un module, d'accord mais où exactement ? Merci Link to comment Share on other sites More sharing options...
fbenoist.com Posted April 28, 2020 Share Posted April 28, 2020 Mon code permet de générer un lien vers un produit dans un module. C'est un exemple. Vous pouvez le placer ou vous voulez. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now