Jump to content
fhcnoreply

Clé de sécurité invalide

Recommended Posts

Bonjour,

 

Je développe actuellement un module de page pour le backoffice de la version 1.6.1.11.

 

Mon problème en une image :

 

312833clesecurite.jpg

 

En cherchant sur internet, je tombe sur des articles de 2014 indiquant une modification à réaliser dans le noyau de Prestashop. J'imagine que cette erreur a pu être corrigée dans une version ultérieure.

 

Le problème ne serait pas gênant si ce n'était pas le site d'une cliente ...

 

Que faut-il indiquer dans le module pour récupérer / générer une clé ?

 

Merci d'avance.

 

Freshcore

Edited by fhcnoreply (see edit history)

Share this post


Link to post
Share on other sites

Tu ne donnes aucune info, pas un centimètre de code.

 

Nous ne sommes devin, j'imagine que c'est après un lien mais bon sans info ...  

Share this post


Link to post
Share on other sites

Bonjour,

 

Effectivement, j'aurai dû agrémenter d'un peu plus d'explication.

 

L'erreur survient lorsqu'on affiche un contrôleur en cliquant sur un élément du menu.

 

Voici l'installation du menu :

	public function install () {
		$this->installTab('AdminPharmaSync', 'PharmaSync');
		if(!parent::install())
			return false;
		return true;
	}

	public function installTab ($controller, $tabname, $controller_parent = false) {
		$tab = new Tab();
		$tab->active = 1;
		$tab->class_name = $controller;
		/* Lang */
		$tab->name = array();
		foreach(Language::getLanguages() as $language)
			$tab->name[$language['id_lang']] = $tabname;
		/* Parent */
		if($controller_parent) {
			$tab->id_parent = (int)Tab::getIdFromClassName($controller_parent);
		} else {
			$tab->id_parent = 0;
		}
		/* Module */
		$tab->module = $this->name;
		$tab->add();
	}

Voici le contrôleur Admin :

<?php
if (!defined('_PS_VERSION_'))
	exit;

class AdminPharmasyncController extends AdminController {

	public function __construct() {
		parent::__construct();
	}

	public function renderList () {
		/* ... traitement des données ... */
		/* Display */
		$smarty = $this->context->smarty;
		$smarty->assign($front_vars);
		$this->context->controller->addCSS(_PS_MODULE_DIR_.'/pharmasync/css/pharmasync.css');
		$this->context->controller->addJS(_PS_MODULE_DIR_.'/pharmasync/js/pharmasync.js');
		return $smarty->fetch(_PS_MODULE_DIR_ . '/pharmasync/views/templates/admin/products.tpl');
	}
}

La clé est bien saisie dans le lien du menu mais visiblement Prestashop ne l'aime pas.

 

En réalité, je ne sais pas trop où le problème se situe ... est-ce qu'il y a une clé / référence à indiquer à Prestashop ? Est-ce que la méthode 'Tools::getAdminTokenLite('AdminModules')' peut-être utilisée quelque part pour débloquer la situation ?

 

Merci à tous les deux.

 

Freshcore

Edited by fhcnoreply (see edit history)

Share this post


Link to post
Share on other sites

Comme ça c'est mieux

class AdminPharmasyncController extends ModuleAdminController

Share this post


Link to post
Share on other sites

Merci Okom3pom, j'ai changé l'héritage de la classe.

 

Par contre, ça ne marche pas mieux pour la clé. C'est curieux, pourquoi serait-elle invalide ? C'est automatiquement généré par Prestashop.

 

<domain>/admin<salt>/index.php?controller=AdminPharmaSync&token=9ab4361f0b64f0e19506c0f74fc630d0

Share this post


Link to post
Share on other sites

Le token est réglé ainsi dans AdminController (dont hérite ModuleAdminController) :

$this->token = Tools::getAdminToken($this->controller_name.(int)$this->id.(int)$this->context->employee->id);

Donc il faudrait vérifier la propriété controller_name. Fouillez du côté de AdminController::checkToken pour suivre la logique qui fait apparaître cet écran de clef invalide.

Share this post


Link to post
Share on other sites

J'avais désinstallé et réinstallé le module, ce n'était pas ça.

 

GuillaumeCW tu viens de résoudre mon problème : la classe s'appelle AdminPharmasync mais le fichier s'appelle AdminPharmaSync.

 

A la génération de la clé, il prenait avec le 's' minuscule et lors du test avec le 'S' majuscule. Du point de vue de Prestashop, il aurait été plus convenu que la chaîne ne soit pas sensible à la casse ou qu'il respecte la valeur de génération. Bon après de mon côté, c'est une erreur bête qu'aurait pu être détecté plus rapidement.

 

Merci à tous les deux. :) sujet résolu.

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