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-23 15:05:40

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

[API 9.1.3] adresse mail et password d'utilisateurs

Bonjour à tous,

je débute sur GLPI pour un stage et je découvre l'API sur laquelle je dois me reposer pour proposer une version plus "conviviale" de l'UI. Je dois créer, lister et modifier des utilisateurs et des tickets.

Avant de commencer le développement, je teste l'API avec Postman pour vérifier mes hypothèses.
L'API fonctionne, je peux récupérer les infos des utilisateurs, cependant

1) je ne récupère pas l'adresse mail dans les données de l'utilisateur (ce qui est gênant pour mon appli), je peux fournir un exemple de données utilisateur (assez long et probablement sans intérêt) pour illustrer. Comment la récupérer, comment la modifier ?

2) Lors de la création des utilisateurs par l'API, il faut que je renseigne un mot de passe et une adresse mail pour les notifications. Sous quelle forme dois-je fournir ces paramètres dans mon input ? Je n'ai pas trouvé ces renseignements dans la doc de l'API accessible par /apirest.php.

Les recherches sur "password" ramènent énormément de résultats, hélas non-pertinents jusqu'ici, j'espère qu'une bonne âme saura me dépatouiller ou au moins m'indiquer dans quelle direction avancer, merci

Last edited by Minou08 (2017-05-23 17:00:20)


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

Offline

#2 2017-05-23 15:47:41

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

Re: [API 9.1.3] adresse mail et password d'utilisateurs

Bonjour,
pour récupérer les email d'un utilisateur :

$url="http://localhost/glpi/apirest.php/User/".$user_id."/UserEmail/";


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

Offline

#3 2017-05-23 15:54:16

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

Re: [API 9.1.3] adresse mail et password d'utilisateurs

Superbe LaDenrée, ça fonctionne pour le 1) , merci!

j'imagine que le champ mot de passe n'est pas accessible en lecture pour des raisons de sécurité mais l'est-il en écriture pour la création d'un usager afin de pouvoir spécifier le mot de passe choisi par l'usager ? Ça m'ennuierait de taper dans la base de données pour le modifier. Ou faut-il créer puis faire une demande de reset de password via l'API ?

Edit: J'ai vu par l'usage de SearchOption les champs que je pouvais utiliser pour la recherche, dont l'id, l'identifiant et l'adresse mail:

<serveur GLPI>/apirest.php/listSearchOptions/User

{
  "1": {
    "name": "Identifiant",
    "table": "glpi_users",
    "field": "name",
    "datatype": "itemlink",
    "available_searchtypes": [
      "contains",
      "equals",
      "notequals"
    ],
    "uid": "User.name"
  },
  "2": {
    "name": "ID",
    "table": "glpi_users",
    "field": "id",
    "datatype": "number",
    "available_searchtypes": [
      "contains"
    ],
    "uid": "User.id"
  },
[...]
  "5": {
    "name": "Adresses de messagerie",
    "table": "glpi_useremails",
    "field": "email",
    "datatype": "email",
    "available_searchtypes": [
      "contains"
    ],
    "uid": "User.UserEmail.email"
  },
[...]

Last edited by Minou08 (2017-05-23 16:07:04)


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

Offline

#4 2017-05-24 10:02:30

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

Re: [API 9.1.3] adresse mail et password d'utilisateurs

Quand je lis sur le site GLPI "vous pouvez afficher, ajouter, supprimer ou actualiser des actifs ou des tickets.", les utilisateurs ne sont pas cités, est-il impossible de les créer par l'API ?


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

Offline

#5 2017-05-27 15:04:16

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

Re: [API 9.1.3] adresse mail et password d'utilisateurs

il est possible de créer des utilisateurs :
exemple  :

$headers = array(
('Content-Type: application/json'),
('App-Token: ' . $app_token),
('Session-Token: '.$sess_token)  
);

$fields='{"input": 
{"name":"APIUSER",
"password":"'.sha1($userpassword).'",
"phone2":"xxxxxx",
"mobile":"xxxxxxxx",
"realname":"API",
"firstname":"user",
"locations_id":1,
"language":null,
"use_mode":0,
"list_limit":null,
"is_active":1,
"comment":"cree par api",
"auths_id":0,
"authtype":1,
"last_login":"2017-05-27 14:30:49",
"date_mod":"2017-05-23 21:55:50",
"date_sync":null,
"is_deleted":0,
"profiles_id":1,
"entities_id":1,
"usertitles_id":0,
"usercategories_id":0,
"date_format":null,
"number_format":null,
"names_format":1,
"csv_delimiter":null,
"is_ids_visible":null,
"use_flat_dropdowntree":null,
"show_jobs_at_login":null,
"priority_1":"#82befd",
"priority_2":"#69f7fc",
"priority_3":"#9cfda2",
"priority_4":"#ffccd5",
"priority_5":"#fd7575",
"priority_6":"#ff0000",
"followup_private":null,
"task_private":null,
"default_requesttypes_id":null,
"password_forget_token":"",
"password_forget_token_date":"",
"user_dn":null,
"registration_number":"",
"show_count_on_tabs":null,
"refresh_ticket_list":null,
"set_default_tech":null,
"personal_token":"' $personaloken.'",
"personal_token_date":"2016-11-14 16:54:20",
"display_count_on_home":null,
"notification_to_myself":1,
"duedateok_color":"#0ffd09",
"duedatewarning_color":"#fdba0c",
"duedatecritical_color":"#ff0505",
"duedatewarning_less":null,
"duedatecritical_less":null,
"duedatewarning_unit":null,
"duedatecritical_unit":null,
"display_options":null,
"is_deleted_ldap":0,
"pdffont":null,
"picture":null,
"begin_date":null,
"end_date":null,
"keep_devices_when_purging_item":null,
"privatebookmarkorder":"[1,2,3]",
"backcreated":null,
"task_state":null,
"palette":"automn",
"layout":null,
"ticket_timeline":null,
"ticket_timeline_keep_replaced_tabs":null,
"lock_autolock_mode":null,
"lock_directunlock_notification":null,
"set_default_requester":null}}';

    $url=$api_url . "/User/";
    
echo "<br/>essai creation user<br/>    ". $url;
print_r($fields);
    $ch = curl_init();
    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);
    print_r($obj);
    $ticket_id=$obj['id'];
echo "<br/>$ticket_id<br/>";

(j'espère ne pas avoir créé trop d'erreurs en supprimant mes données perso du code)

tout les champs ne sont pas forcément indispensables...
il faut bien sur avant cette partie , avoir récupéré un session token  pour un untilisateur avec les droits de creation users.


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

Offline

#6 2017-05-29 11:35:56

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

Re: [API 9.1.3] adresse mail et password d'utilisateurs

Merci beaucoup LaDenrée, je vais essayer ça de ce pas!


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

Offline

#7 2017-05-29 11:41:48

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

Re: [API 9.1.3] adresse mail et password d'utilisateurs

Oops, je m'aperçois que l'adresse mail ne fait pas partie des données de la création, elle doit donc faire l'objet d'une requête séparée pour être positionnée ?


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

Offline

#8 2017-05-29 11:53:52

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

Re: [API 9.1.3] adresse mail et password d'utilisateurs

une fois l'utilisateur créé il faut récupérer son user_id  ajouter l'email avec un truc du genre ( j'ai pas testé mais ça devrait marcher).

$url="http://localhost/glpi/apirest.php/User/".$user_id."/UserEmail/";
fields='{"input":{"users_id":'.$user_id.',"is_default":1,"is_dynamic":0,"email":"'.$user_email.'"}}';
    $ch = curl_init();
    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);
    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

Offline

#9 2017-05-30 09:43:32

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

Re: [API 9.1.3] adresse mail et password d'utilisateurs

Au poil, je vais essayer.

Un grand merci je vais pouvoir avancer!


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

Offline

Board footer

Powered by FluxBB