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 2019-06-18 16:03:13

MrCraac
Member
Registered: 2019-06-18
Posts: 6

How to add user's password and user's email

Hi,

I am able to create new user using the API, however, I am not able to set passwords and email.

First question is , is that possible to do ? if yes, how should I proceed ?
Maybe the user has to be updated once created ?
However, I did not found the fields name for those data.

Here is my request to create user:

$data = [
            'input' => [
                'name' => 'JT',
                'realname' => 'Travolta',
                'firstname' => 'John',
                'language' => 'en_GB',
                'is_active' => 1,
                'entities_id' => 3,
            ]
        ];
$input = json_encode($data);

$url=$api_url . "/User";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS,$input);
$json = curl_exec($ch);
curl_close ($ch);

Thanks for reading me smile

Je suis Francais, si qqun prefere repondre en francais ... !

Last edited by MrCraac (2019-06-18 16:49:50)

Offline

#2 2019-06-19 12:15:54

MrCraac
Member
Registered: 2019-06-18
Posts: 6

Re: How to add user's password and user's email

I found how to add the user's password , it seems it has to use sha1
$name= "test@domain.com";
$pwd = sha1($name);

$data = [
    'input' => [
        'name' => $name,
        "password" => $pwd,
        'realname' => 'Travolta',
        'email' => 'Travolta',
        'firstname' => 'John',
        'language' => 'en_GB',
        'is_active' => 1,
        'entities_id' => 3,
    ]
];

However, I see that the emails are stored on another tables , so I am still looking on how to add it. Any help welcome smile

Offline

#3 2019-06-19 14:20:48

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 4,587

Re: How to add user's password and user's email

$url='Myserver.com/glpi/apirest.php/User/'.$user_id.'/Useremail';


then post

$url='Myserver.com/glpi/apirest.php/User/'.$user_id.'/Useremail';
$fields='{ "input" : {"users_id": '.$user_id.', "is_default": "1", "is_dynamic":"0" ,"email": '.$newemail.' }}';

Trouver la panne avant de réparer...
*GLPI 9.1.6+fusion9.1+1.1+behaviours1.5.0+reports+fields+appliances+pdf+badges+formcreator2.5.2 PHP7.0 Mariadb10
*GLPI 9.4.3(behaviours2.2.1+fusioninventoty 9.4+1.1+applicatifs2.5.0+fields 1.9.1)hebergé sur serveur mutualisé.

Offline

#4 2019-06-19 14:36:10

MrCraac
Member
Registered: 2019-06-18
Posts: 6

Re: How to add user's password and user's email

Thanks for your answer , it helps me a lot smile
I am now working on the search request to retrieve the user id.

Offline

#5 2019-06-19 14:48:36

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 4,587

Re: How to add user's password and user's email

$userlogin="ladenree";


$url="/search/User?criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^".$userlogin."$";


Trouver la panne avant de réparer...
*GLPI 9.1.6+fusion9.1+1.1+behaviours1.5.0+reports+fields+appliances+pdf+badges+formcreator2.5.2 PHP7.0 Mariadb10
*GLPI 9.4.3(behaviours2.2.1+fusioninventoty 9.4+1.1+applicatifs2.5.0+fields 1.9.1)hebergé sur serveur mutualisé.

Offline

#6 2019-06-19 16:11:59

MrCraac
Member
Registered: 2019-06-18
Posts: 6

Re: How to add user's password and user's email

Merci encore pour la réponse,
Je ne comprends pas , l'ID de mon user est 8.
lorsque je fait la requête avec l'URL ci dessus, j'obtiens:
Array
(
    [totalcount] => 1
    [count] => 1
    [sort] => 1
    [order] => ASC
    [data] => Array
        (
            [0] => Array
                (
                    [1] => NewUserTest
                    [80] => Root entity
                    [34] =>
                    [5] =>
                    [6] =>
                    [3] =>
                    [8] => 1
                )

        )

    [content-range] => 0-0/1
)
Je ne vois pas comment récupérer l'ID à partir de ca, quelque chose doit m'échapper.

Offline

#7 2019-06-19 16:14:32

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 4,587

Re: How to add user's password and user's email

il faut ajouter un     &forcedisplay[0]=2    pour forcer le retour du champ ID

$url="/search/User?criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^".$userlogin."$&forcedisplay[0]=2";

Trouver la panne avant de réparer...
*GLPI 9.1.6+fusion9.1+1.1+behaviours1.5.0+reports+fields+appliances+pdf+badges+formcreator2.5.2 PHP7.0 Mariadb10
*GLPI 9.4.3(behaviours2.2.1+fusioninventoty 9.4+1.1+applicatifs2.5.0+fields 1.9.1)hebergé sur serveur mutualisé.

Offline

#8 2019-06-19 16:55:29

MrCraac
Member
Registered: 2019-06-18
Posts: 6

Re: How to add user's password and user's email

Merci encore, j'étais pas près de le trouver tout seul celui la!
smile

Offline

#9 2019-06-19 18:23:19

MrCraac
Member
Registered: 2019-06-18
Posts: 6

Re: How to add user's password and user's email

Au cas ou ca serve, voici mon code pour ajouter un user et lui set un email:
<?php

// SESSION OPENING
function OpenSession()
{
    try {
        $api_url = "http://localhost/apirest.php";
        $user_token = "QU6a1yy6Fpf2aVxg4rFzjTiZUcpFbGOyB8uBApFA";
        $app_token = "Ia9UgZflvuqO7P1Sg5u4Qz3QsylIGfh6CMFxbp5l";
        $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'];
        $headers = array(
            'Content-Type: application/json',
            'App-Token: ' . $app_token,
            'Session-Token: ' . $sess_token
        );

        return $headers;
    } catch (Exception $e) {
        echo "session opening error: $e->getMessage()";
    }

}


// USER CREATION

function CreateUser($name,$realname = null,$firstname = null ,$entities_id,$pwd, $headers){
    try {
        $data = [
            'input' => [
                'name' => $name,
                "password" => $pwd,
                'realname' => $realname,
                'firstname' => $firstname,
                'language' => 'en_GB',
                'is_active' => 1,
                'entities_id' => $entities_id,
            ]
        ];
        $input = json_encode($data);

        $api_url = "http://localhost/apirest.php";
        $url=$api_url . "/User";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($ch, CURLOPT_POSTFIELDS,$input);

        $json = curl_exec($ch);
        curl_close ($ch);

        $res = json_decode($json, true);

        if ($res[0]== "ERROR_GLPI_ADD") {
            return ["status" => false, "message" => $res[1], "user" => $name];

        }
        else {
            return ["status" => true];
        }

    }
    catch (Exception $e) {echo "user creation error: $e->getMessage()";}
}


function AddEmail($name, $headers)
{
// GET USER ID
    try {
        $api_url="http://localhost/apirest.php";
        $url = $api_url . "/search/User?criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^" . $name . "$&forcedisplay[0]=2";


        //$url=$api_url . "/listSearchOptions/User";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
        //curl_setopt($ch, CURLOPT_POSTFIELDS,$input);
        $json = curl_exec($ch);
        curl_close($ch);


    } catch (Exception $e) {
        echo "get user id error: $e->getMessage()";
    }

    $obj = json_decode($json, true);


// ADD USER EMAIL
    try {
        $user_id = $obj['data']['0']['2'];

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

        $res = json_decode($json, true);
//print_r($res);
        return true;

    } catch (Exception $e) {
        echo "email add error: $e->getMessage()";
    }

}

//  USER TEST
$name= "hello2@coucou.fr";
$realname = 'test';
$firstname = 'bbb';
$entities_id = 3;
$pwd = sha1($name);
$headers = OpenSession();

$CreateUser= CreateUser($name,$realname,$firstname,$entities_id,$pwd, $headers);

if ($CreateUser['status']) {

   $AddEmail = AddEmail($name, $headers);
   if (!$AddEmail){ echo "error for user: $name while adding email";}
   else {echo "user: $name added successfuly";}


}

else { echo "error: ". $CreateUser['message']. " User: ". $CreateUser['user'] ;}

Offline

Board footer

Powered by FluxBB