Jump to content

getAdminToken pour un utilisateur non-connecter


Recommended Posts

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

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

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

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

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

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

  • 2 weeks later...

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