Jump to content

Recommended Posts

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.

 

Share this post


Link to post
Share on other sites

Bonjour,

peut être en générant le lien à partir de la fonction dédiée dans la classe Link.

Share this post


Link to post
Share on other sites

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 by leakimd (see edit history)

Share this post


Link to post
Share on other sites

bonjour avez vous trouvez la solution car j ai le même problème  merci a vous 

Share this post


Link to post
Share on other sites

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>

 

Share this post


Link to post
Share on other sites

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/

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ?

 

Share this post


Link to post
Share on other sites

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

Capture d’écran_2020-04-25_18-37-02.png

Capture d’écran_2020-04-25_18-33-01.png

Share this post


Link to post
Share on other sites
Posted (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 by leakimd (see edit history)

Share this post


Link to post
Share on other sites

fbenoist.com,

 

Le code que vous avez fournis doit se trouvé dans un module, d'accord mais où exactement ?

 

Merci

Share this post


Link to post
Share on other sites


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. 

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More