You are not logged in.
Pages: 1
Bonjour !
J'ai un problème avec l'API REST (Encore :-) )
J'ai ouvert un BUG sur GITHUB il y a 2 semaines, mais aucune réponse, je me demande si je suis le seul à rencontrer ce problème.
https://github.com/glpi-project/glpi/issues/2178
J'ai un utilisateur qui appartient à ma "root entity" et qui peut accéder récursivement aux autres.
Quand je commence ma session j'appelle "getActiveEntities" et j'obtiens 0
J'utilise changeActiveEntities vers l'ID : 4 et j'obtiens comme réponse "true"
mais si je fais de nouveau "getActiveEntities" j'obtiens encore 0 au lieu de 4
Est-ce que quelqu'un a une idée ?
Merci :-)
Offline
bonjour je ne constate pas ce bug (glpi 9.1.3)
avec la page suivante qui demande l'entité, change et redemande :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- ladenree -2017- -->
<head>
<title>TEST API</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="Generator" content="Dev-PHP 2.6.1" />
<meta name="Keywords" content="GLPI,API," />
<meta name="Description" content="Tests API
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
</head>
<body>
<h1>test API</h1>
<?php
$api_url="http://localhost/apirest.php";
$user_token="montoken";
$app_token="myapptoken";
echo "session token<br/>";
$ch = curl_init();
$url=$api_url . "/initSession?Content-Type=%20application/json&app_token=".$app_token ."&user_token=".$user_token;
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($json,true);
$sess_token = $obj['session_token'];
echo "session token :".$sess_token."<br/>";
$headers =array(
'Content-Type: application/json',
'app-token: ' .$app_token,
'session-token: '.$sess_token
);
//print_r($headers);
/*****get entity************/
$url=$api_url . "/getActiveEntities/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$json = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($json,true);
echo "<br/>";
print_r($obj);
echo "<br/>";
/******set entity**********/
$ch = curl_init();
$url=$api_url . "/changeActiveEntities/";
$fields='{"entities_id": 2, "is_recursive": true}';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$request_result = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($request_result,true);
echo "<br/>";
print_r($obj);
echo "<br/>";
/*****get entity************/
$url=$api_url . "/getActiveEntities/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$json = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($json,true);
echo "<br/>";
print_r($obj);
echo "<br/>";
?>
</body>
</html>;
la réponse est :
session token xxxx
Array ( [active_entity] => Array ( [id] => 1 [active_entity_recursive] => 1 [active_entities] => Array ( [0] => Array ( [id] => 1 ) ) ) )
1
Array ( [active_entity] => Array ( [id] => 2 [active_entity_recursive] => 1 [active_entities] => Array ( [0] => Array ( [id] => 2 ) ) ) )
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
complément :
avec :
$url=$api_url . "/changeActiveEntities/";
$fields='{"entities_id": 0, "is_recursive": true}';
j'ai bien toutes mes 4 entités :
Array ( [active_entity] => Array ( [id] => 0 [active_entity_recursive] => 1 [active_entities] => Array ( [0] => Array ( [id] => 0 ) [1] => Array ( [id] => 3 ) [2] => Array ( [id] => 1 ) [3] => Array ( [id] => 2 ) ) ) )
ma réponse précedente ne me donnait qu'une entité (id=1) car à l'ouverture de glpi je suis par défaut sur l'entité 1 non récursif.
tout semble fonctionner normalement.
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Bonjour,
Malgré plusieurs essais, je n'arrive toujours pas à changer l'entitée active, j'obtiens bien un retour à true, mais si je fais un getactiveentities, je suis toujours à 0 au lieu de 4.
Est-il possible que j'ai un problème de droit avec mon utilisateur ?
Ou la réponse se trouve ailleurs ?
merci par avance
Offline
Je viens de faire des tests,
Si mon utilisateur X est dans l'entité 1 (configurer dans l'interface de GLPI),
Je fais un getactiveentities --> resultat 1
Ensuite changeactiveentities --> vers 4
getactiveentities --> resultat --> 0
Help :-)
Offline
quelq paramètre avez vous dans votre payload json ?
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Bonjour,
J'ai trouvé l'origine de mon problème.
En C# la sérialisation d'objets json rajoute des "[" "]" en début et fin de paramètres. L'API ne sait donc pas l'interpréter, mais je rencontre ce problème uniquement avec le endpoint changeactiveentities, j'ai donc retiré les crochets, et ça fonctionne parfaitement
Merci encore pour votre aide
Bonne journée
Offline
Pages: 1