You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2017-05-15 11:44:58

Alescay
Member
Registered: 2017-04-27
Posts: 13

[API 9.1.2] Récupérer l'user_id

Bonjour,

Question bête, mais je galère à trouver la réponse.
Comment récupérer l'id de l'user connecté à l'API ? Les méthodes getMyEntities, getActiveEntities ne fournissent que l'id du poste du l'utilisateur (post-only, admin...) mais j'ai pas trouvé l'id "normale".

Est-ce que quelqu'un aurait une idée ?

Merci d'avance.

Offline

#2 2017-05-15 14:15:45

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,145

Re: [API 9.1.2] Récupérer l'user_id

vous pouvez utiliser le endpoint : /getFullSession

$api_url="http://localhost/glpi/apirest.php";
$headers = [
'Content-Type: application/json',
'app-token: ' .$app_token,
'session-token: '.$sess_token 
];

$ch = curl_init();
$url=$api_url . "/getFullSession/";
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);

$glpi_myuser_id =$obj['session']['glpiID'];
echo "<br/>ID utilisateur ".$glpi_myuser_id;
//**********il y a plein d'autres infos dans la réponse :*********;
print_r($obj);


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Online

#3 2017-05-18 08:55:18

jonalex
Member
Registered: 2017-04-26
Posts: 23

Re: [API 9.1.2] Récupérer l'user_id

Bonjour,

Comment récupérer l'id d'un utilisateur en effectuant une recherche via l'api ? Quand j'effectue une recherche je récupère uniquement le username et l'entité

Merci par avance

Offline

#4 2017-05-18 09:43:34

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,145

Re: [API 9.1.2] Récupérer l'user_id

Bonjour,

je le fais en 2 etapes :  recherche de l'utilisateur et de l'ID qui me renvoie un tableau avec l'ID puis recherche de l'utilisateur avec l'ID.

ATTENTION :  j'ai l'impression que la recherche ne focntionne qu'avec "contient [0]" et que equals[1] et notequals[2] renvoient la même chose :  donc il est possible d'avoir plusieurs réponses dans la recherche de l'ID (adaptez le code dans ce  cas)

$headers = [
'Content-Type: application/json',
'app-token: ' .$app_token,
'session-token: '.$sess_token  
];

/*****get user************/

$username="Ladenree";//username à rechercher;

$ch = curl_init();
$url=$api_url . "/search/User?criteria[0][field]=2&criteria[0][searchtype]=2&criteria[0][value]=&criteria[1][link]=AND&criteria[1][field]=1&criteria[1][searchtype]=2&criteria[1][value]=" . $username;
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);
print_r($obj['data'][0]);
$user_id=$obj['data'][0][2];
echo "<br/> userid $user_id <br/>";$ch = curl_init();
$url=$api_url . "/User/" . $user_id;
$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);
print_r($obj);

Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Online

#5 2017-05-24 10:06:30

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,145

Re: [API 9.1.2] Récupérer l'user_id

j'ai trouver plus simple pour afficher les colonnes qu'on veut dans la réponse :
il suffit de passer un tableau avec les id des colonnes dans l'url

$url=$api_url . "/search/User?forcedisplay[0]=2&forcedisplay[1]=5&criteria[1][field]=1&criteria[1][searchtype]=2&criteria[1][value]=" . $username;

la requete affiche le login (field1) l'id (field 2) et l'email utilisateur (field 5)


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Online

#6 2017-05-24 10:46:32

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: [API 9.1.2] Récupérer l'user_id

Décodage pour le noob que je suis : forcedisplay est un tableau des colonnes à afficher, les numéros sont ceux des searchoptions de l’objet (qu’il est possible de lister avec /apirest.php/listSearchOptions/User).

Ici la première colonne se voit affecter la valeur 2 qui correspond à la searchoption « id », la colonnesuivante à la searchoption 5 « email ».

On s’aperçoit que le critère de recherche apparait lui aussi sans qu’on ait eu besoin de le spécifier dans le forcedisplay.

La recherche se fait sur le champ 1 qui est « name » avec un searchtype 2 « equals » et une value $username. On cherche donc l’usager qui a un identifiant exactement égal à .username et le résultat apparaîtra sous la forme d’un tableau associatif associant les numéros de searchoptions et les valeurs.

C'est bien ça ?


GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie

Offline

#7 2017-05-24 10:51:58

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,145

Re: [API 9.1.2] Récupérer l'user_id

oui,

avec  un petit doute sur le  searchtype 2 « equals »   : sur le papier c'est "egal" mais d'après mes observations c'est "contient"

je pense que c'est un bug ( déclaré sur github)
http://forum.glpi-project.org/viewtopic.php?id=157720


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Online

#8 2017-05-24 10:56:05

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: [API 9.1.2] Récupérer l'user_id

Oui c'est clair, ça fonctionne toujours en enlevant des lettres. Je m'étais fondé sur la doc de /apirest.php qui donne un tableau

searchtype: type of search in [contains¹, equals², notequals², lessthan, morethan, under, notunder].


GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie

Offline

#9 2017-05-24 11:13:52

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,145

Re: [API 9.1.2] Récupérer l'user_id

listsearchoptions renvoie une liste plus réduite pour la recherche sur name :

$url=$api_url . "/listSearchOptions/User/";

[1] => Array (
[name] => Identifiant
[table] => glpi_users
[field] => name
[datatype] => itemlink
[available_searchtypes] =>
      Array (
          [0] => contains
          [1] => equals
          [2] => notequals )

[uid] => User.name )


https://github.com/glpi-project/glpi/issues/2182

la correction est prévue pour la version 9.1.5.


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Online

#10 2017-05-24 11:44:05

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: [API 9.1.2] Récupérer l'user_id

OK donc ils se comporteraient tous comme "contains" en fait, comme par hasard celui qui aurait la valeur 0. Heureusement c'est probablement le plus utilisé.


GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie

Offline

#11 2017-05-24 11:50:21

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,145

Re: [API 9.1.2] Récupérer l'user_id

pour des recherches utilisateurs par le login je dirais plutot que c'est "equals" le plus utilisé et encore plus sur une recherche par ID.

ça oblige à prévoir une réponse à plusieurs lignes et d'affiner si besoin.

pour m'assurer d'avoir le bon je suis obligé de scanner mon tableau de resultats pour vérifier que la valeur retournée est exactement celle que je veux.


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Online

#12 2017-05-24 12:00:33

Minou08
Member
Registered: 2017-05-17
Posts: 26

Re: [API 9.1.2] Récupérer l'user_id

Oui tout à fait! J'ai fait preuve de courte vue et  je me suis mal exprimé, le plus générique en fait. Si ça avait été equals, donc le plus restrictif qui avait été la valeur par défaut l'effet aurait été plus gênant puisque des données attendues n'auraient pas été retournées.


GLPI 9.1.4 API REST/Client JavaEE/fusionInventory/Debian 8 Jessie

Offline

Board footer

Powered by FluxBB