Jump to content

Problème de clé invalide en boucle empêchant l'automatisation


Recommended Posts

Bonjour à tous,

Je rencontre un problème récurrent avec PrestaShop et j'espère que quelqu'un ici pourra m'aider à le résoudre. Voici une description détaillée du problème et des solutions que j'ai déjà essayées.

J'essaie d'automatiser l'application de filigranes (watermarks) sur les images de produits récemment modifiés via un script PHP. Malheureusement, je suis confronté à une erreur de "clé invalide" (token invalide) en boucle, ce qui nécessite une vérification manuelle et empêche l'automatisation complète.

Ce que j'ai essayé jusqu'à présent

Utilisation du token d'admin : J'ai utilisé le token généré par Tools::getAdminTokenLite('AdminModules') pour les appels AJAX. Voici un extrait du script que j'utilise :

 

Quote

$context = Context::getContext(); $token = Tools::getAdminTokenLite('AdminModules'); $adminDir = basename(admin); $baseUrl = Tools::getShopDomainSsl(true) . __PS_BASE_URI__ . $adminDir . '/index.php?controller=AdminModules&configure=simplewatermark&token=' . $token; $url = $baseUrl . "&watermarkmanu&id_product=" . $productId; $response = file_get_contents($url);

Vérification des permissions : J'ai vérifié que le fichier apply_watermark.php a les permissions appropriées pour être exécuté via le web.

Debugging des URL : J'ai vérifié que l'URL générée est correcte et accessible depuis le navigateur, mais l'erreur persiste :

 

Quote

https://domaine/admin/index.php?controller=AdminModules&configure=simplewatermark&token=9d9888314c6e94c9db56f490d34e447c&watermarkmanu&id_product=53

Essais avec des produits spécifiques et des modifications de dates : J'ai essayé de limiter le script à un produit spécifique et aux produits modifiés dans la journée.

 

Problèmes rencontrés

La clé (token) semble devenir invalide de manière aléatoire, ce qui oblige à une intervention manuelle pour régénérer ou valider le token.

Cela empêche l'automatisation complète, car une vérification manuelle est requise chaque fois que le token devient invalide.

Questions

Y a-t-il un moyen de générer un token qui reste valide plus longtemps ou indéfiniment pour ce type d'opérations ?

Quelqu'un a-t-il déjà rencontré et résolu ce problème ? Si oui, quelles solutions ont fonctionné pour vous ?

Merci d'avance pour votre aide et vos suggestions. Toute piste ou solution serait grandement appréciée !

Cordialement, Alex

Link to comment
Share on other sites

Le problème de "token invalide" que tu rencontres est assez courant dans les systèmes sécurisés comme PrestaShop. Voici quelques approches et pistes que tu pourrais explorer pour essayer de résoudre ce problème :

1. Utilisation d'un Cron Job pour Générer un Nouveau Token

Plutôt que de dépendre d'un token généré manuellement, tu peux configurer un cron job qui régénère le token à intervalles réguliers et l'utilise pour ton script. Voici comment tu pourrais procéder :

Script pour régénérer le token : Crée un script PHP qui génère un nouveau token à chaque exécution et le stocke dans un fichier ou une base de données.

php

Copier le code

// regenerate_token.php $token = Tools::getAdminTokenLite('AdminModules'); file_put_contents('/path/to/your/token/file.txt', $token);

Script principal : Modifie ton script principal pour lire le token à partir du fichier généré par le cron job.

php

Copier le code

// main_script.php $context = Context::getContext(); $token = file_get_contents('/path/to/your/token/file.txt'); $adminDir = basename(admin); $baseUrl = Tools::getShopDomainSsl(true) . __PS_BASE_URI__ . $adminDir . '/index.php?controller=AdminModules&configure=simplewatermark&token=' . $token; $url = $baseUrl . "&watermarkmanu&id_product=" . $productId; $response = file_get_contents($url);

Configurer le cron job : Configure un cron job pour exécuter le script regenerate_token.php à intervalles réguliers, par exemple toutes les heures.

bash

Copier le code

0 * * * * /usr/bin/php /path/to/your/regenerate_token.php

2. Utilisation des Webservices de PrestaShop

PrestaShop propose des webservices qui permettent d'interagir avec le système de manière sécurisée sans nécessiter de token changeant. Voici comment configurer les webservices pour ton utilisation :

Activer les webservices :

Connecte-toi à ton back-office PrestaShop.

Va dans Paramètres avancés > Webservice.

Active le webservice en cochant la case correspondante.

Créer une clé API :

Clique sur "Ajouter une nouvelle clé".

Génère une clé (automatiquement ou manuellement).

Donne les permissions nécessaires à cette clé pour accéder aux modules et produits.

Sauvegarde la clé API.

Utiliser la clé API dans ton script :

Utilise la clé API pour interagir avec le webservice. Voici un exemple pour obtenir des informations sur un produit et appliquer le watermark :

php

Copier le code

$apiKey = 'YOUR_API_KEY'; $productId = 53; $webServiceUrl = 'https://domaine/api/products/' . $productId; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $webServiceUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Authorization: Basic ' . base64_encode($apiKey . ':') )); $response = curl_exec($ch); curl_close($ch); $productData = json_decode($response, true); // Process the product data and apply watermark

3. Session Management

Assure-toi que la session admin n'expire pas trop rapidement. Cela peut être configuré dans PrestaShop pour s'assurer que les tokens générés restent valides plus longtemps. Va dans Paramètres avancés > Administration et ajuste les paramètres de durée de session.

4. Debugging et Logs

Active les logs et debugging pour mieux comprendre pourquoi et quand le token devient invalide. Cela peut donner des indices sur les circonstances qui provoquent l'invalidation du token.

Active les erreurs dans config/defines.inc.php en changeant _PS_MODE_DEV_ à true.

Vérifie les logs de PrestaShop et du serveur web pour des messages d'erreur spécifiques.

5. Security Best Practices

Assure-toi que ton site est à jour et que toutes les mesures de sécurité sont en place pour minimiser les risques d'attaques qui pourraient affecter les tokens.

En combinant ces approches, tu devrais pouvoir automatiser l'application de filigranes sans rencontrer de problèmes de token invalide. N'hésite pas à adapter ces solutions en fonction de tes besoins spécifiques.

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour CORSY-98,

Merci beaucoup pour ta réponse et tes suggestions. Je vais essayer de mettre en place le cron job pour régénérer le token et aussi regarder du côté des webservices de PrestaShop.

Encore merci pour ton aide !

Cordialement, Alex

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...