williambamps Posted September 15, 2022 Share Posted September 15, 2022 Bonjour, Je cherche à appeler un controller admin depuis un script php externe en lui passant des paramètres. J'arrive bien à me créer un adminToken lorsque je suis connecté et le script de mon module répond. $token = Tools::getAdminToken('AdminOrdersBpost'.intval(Tab::getIdFromClassName('AdminOrdersBpost')).intval($cookie->id_employee)); Mais le but est d'y arriver sans être connecté. Quit à auto-loggué un user bien défini en lui créant un cookie lorsque quelqu'un visite une page (sécurisé d'une autre manière du coup) J'ai déjà essayé cette méthode en PHP mas sans succès $passwd = md5(_COOKIE_KEY_ . $pass); $sql = 'SELECT * FROM '._DB_PREFIX_.'employee WHERE id_employee = 2'; $results = Db::getInstance()->ExecuteS($sql); // If no employee found, die if (!count($results)) { die("Auth failed"); } // Get all employee data $employee = $results[0]; // Create a new cookie with that data $cookie->id_lang = $employee['id_lang']; $cookie->id_employee = $employee['id_employee']; $cookie->lastname = $employee['lastname']; $cookie->firstname = $employee['firstname']; $cookie->email = $employee['email']; $cookie->profile = $employee['id_profile']; $cookie->passwd = $passwd; $cookie->write(); Lorsque je vais sur mon url avec le token, je continue à voir la login page. domaine.com/adminurl/index.php?controller=AdminOrdersBpost&reference=0xxxx&printLabelsorder_bpost&token=".$token; Est-ce possible ? Une idée ? PS Version: 1.7.8.4 PHP: 7.4 Merci ! Link to comment Share on other sites More sharing options...
Eolia Posted September 15, 2022 Share Posted September 15, 2022 Pourquoi passer par les cookies ? $tab = 'AdminOrdersBpost'; $token = Tools::getAdminToken($tab.(int)Tab::getIdFromClassName($tab).(int)$employee['id_employee']); Link to comment Share on other sites More sharing options...
williambamps Posted September 15, 2022 Author Share Posted September 15, 2022 Bonjour @Eolia Car j'aimerais que mon appel puisse aboutir sans qu'un utilisateur ne soit connecté, un peu comme je l'aurais fais depuis une crontask; Malheureusement le module dont j'ai besoin ici ne le permet pas et pouvoir executer cet appel sans connecter d'utilisateur serait plus souple dans notre cas d'utilisation. Plutôt que le cookie j'ai également tenté de faire un appel Curl vers le login pour auto-authentifier l'utilisateur executant mon script mais pareil sans réussir. Link to comment Share on other sites More sharing options...
Eolia Posted September 15, 2022 Share Posted September 15, 2022 le code que je vous ai donné n'utilise pas le cookie. En même temps, c'est un peu limite question sécurité votre histoire.... Utiliser des adminController sans authentification, bof bof^^ Link to comment Share on other sites More sharing options...
williambamps Posted September 15, 2022 Author Share Posted September 15, 2022 23 minutes ago, Eolia said: le code que je vous ai donné n'utilise pas le cookie. En même temps, c'est un peu limite question sécurité votre histoire.... Utiliser des adminController sans authentification, bof bof^^ Malheureusement le token généré par ce code ne me permet pas d'avoir accès sans me connecter; Et oui je me doute bien que cette méthode requière une autre protection: mais comme cela est uniquement destiné à une usage interne la sécurisation peut se faire à d'autres niveaux. Une idée de pourquoi ce token me demande quand même l'authentification Presta ? Ou une autre approche à me proposer ? Link to comment Share on other sites More sharing options...
Eolia Posted September 15, 2022 Share Posted September 15, 2022 Pourquoi passez-vous par un adminController ? Link to comment Share on other sites More sharing options...
williambamps Posted September 15, 2022 Author Share Posted September 15, 2022 Just now, Eolia said: Pourquoi passez-vous par un adminController ? Je suis tributaire du code d'un module existant ne proposant pas d'autres méthodes mais qui fonctionne très bien pour un utilisateur connecté. Link to comment Share on other sites More sharing options...
Eolia Posted September 15, 2022 Share Posted September 15, 2022 Ok mais ce module ne doit utiliser que certaines fonctions de ce controleur qui utilise au final des fonctions/classes de base 1 Link to comment Share on other sites More sharing options...
williambamps Posted September 16, 2022 Author Share Posted September 16, 2022 (edited) 13 hours ago, Eolia said: Ok mais ce module ne doit utiliser que certaines fonctions de ce controleur qui utilise au final des fonctions/classes de base Probablement, mais pour rester compatible peut importe les futures mises à jour je ne peu pas toucher au code ce module ni décortiquer les class utilisées. Le plus simple serait d'utiliser la méthode prévue. Je cherche donc toujours un moyen de by-passer cette login box Edited September 16, 2022 by williambamps (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted September 16, 2022 Share Posted September 16, 2022 il y a 48 minutes, williambamps a dit : Probablement, mais pour rester compatible peut importe les futures mises à jour je ne peu pas toucher au code ce module ni décortiquer les class utilisées. Le plus simple serait d'utiliser la méthode prévue. Je cherche donc toujours un moyen de by-passé cette login box Montez un autre module qui utilisera les méthodes du premier. Link to comment Share on other sites More sharing options...
williambamps Posted September 16, 2022 Author Share Posted September 16, 2022 1 hour ago, Mediacom87 said: Montez un autre module qui utilisera les méthodes du premier. C'est une piste en effet, même si elle était moins direct que mon idée de pouvoir faire cet appel directement depuis un PHP externe. L'idée semblait simple en y regardant surtout avec cette méthode de création de cookie pour authentifier un admin. Auriez-vous une piste sur comment appeler un controler admin depuis un autre module sans être authentifier ? Merci Link to comment Share on other sites More sharing options...
williambamps Posted September 29, 2022 Author Share Posted September 29, 2022 Personne n'a une idée pour optenir ce token sans utilisateur afin de. lancer cette commande par le serveur (cron) ? 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