Jump to content

le Cookie en ajax sur l'admin avec le module bloc cms


Recommended Posts

Bonjour,

 

Dans le but de faire un peu d'ajax dans un des modules pour prestashop 1.4 (pour gérer les soldes, promotions, ventes flash) je me demandais comment était fait le coeur de prestashop.

 

Donc en regardant le code du module d'édition de Bloc CMS il y à de l'ajax. Cool je me dit comment implémenter cela.

 

Dans le fichier ajax_blockcms.php (qui pour rappel permet d'afficher les pages d'une sous-catégories d'une catégorie principale dans l'admin)

 

include_once('../../config/config.inc.php');
include_once('../../init.php');

 

Le fichier init.php appelé est celui de l'espace publique qui initialise le cookie du Front office. Donc quand on essaie d'afficher un petit print_r sur la variable $cookie dans l'ajax bien c'est plus le bon !

 

Ok y'a une sécurité supplémentaire avec un token sous forme de secure_key, mais je demande bien comment puis-je faire pour justement récupérer ce fameux cookie d'admin.

 

En gros depuis mon code ajax, j’appelle une fonction publique de ma classe d'admin (extends d'un AdminTab) et bien entendu le global $cookie ne fonctionne pas et m'affiche celui de la partie publique ! Mon but étant de pouvoir faire un lien avec le bon token sur une autre page du backoffice depuis une liste de produits.

 

Avez-vous une idée ?

Merci.

Link to comment
Share on other sites

Personne n'a souhaité faire d'ajax sur l'admin ?

 

Salut , pourquoi passer par le cookie ?

Si tu ne veux que le token , et puisque tu pars d'un admintab , tu peux passer le token du tab ,

 $this>token

à ton script ajax, dans l'url d'appel ?

Dans le script tu récupères ensuite le token :

 

$token = Tools::getValue('token',null);

Link to comment
Share on other sites

Personne n'a souhaité faire d'ajax sur l'admin ?

 

Salut , pourquoi passer par le cookie ?

Si tu ne veux que le token , et puisque tu pars d'un admintab , tu peux passer le token du tab ,

 $this>token

à ton script ajax, dans l'url d'appel ?

Dans le script tu récupères ensuite le token :

 

$token = Tools::getValue('token',null);

 

Salut,

 

Merci pour l'info, j'ai déjà essayé de passer le token mais celui-ci est différent à chaque fois en fonction de l'url puisque calculé avec l'id employé et le classname id du tab. C'est cet exemple de code que j'ai trouvé un peu partout en dur dans le code puisque qu'aucune fonction n'a été prévue pour récupérer un lien d'un tab.

 

$id_tab_catalog     = (int)(Tab::getIdFromClassName('AdminCatalog'));
$token = Tools::getAdminToken('AdminCatalog'.(int)($id_tab_catalog).(int)($cookie->id_employee));

 

J'affiche une liste de produits en ajax qui sont en promotions sur le site selon certains critères ce qui fonctionne très bien. Ce que je cherchais à faire c'était de mettre un lien sur l'id du produit pour aller voir en détail ce produit. Ce qui ne fonctionnait pas puisque dans l'ajax d'exemple sur ajax_blockcms.php qui pour rappel est un ajax d'admin et non de la partie publique, charge le cookie qui n'est pas le bon !

C'est un peu n'importe quoi non ?

Donc pour résumer, voici ce que j'ai fait. A mon appel ajax je passe l'id de l'employé et ainsi je suis capable de calculer l'id token correspondant. Pour sécurité, j'ai créer un token specific que je passe également lors des mes appels ajax initialisé lors de la connexion à mon tab d'admin.

 

Mais je trouve quand même que la documentation développeur de prestashop n'est pas très complète. A moins que je raconte n'importe quoi mais ou est la doc développeur ?

Merci.

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