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 2009-03-17 17:08:28

stevenhab
Member
Registered: 2009-03-12
Posts: 14

[AIDE] Création utilisateur dans AD + homedir + boite mail.

Bonjour à tous et à toutes,

Actuellement en altérnance dans ma boite, je suis chargé d'apporter des modifications dans notre GLPI.
Les points à réaliser sont les suivant :
- Ajouter un utilisateur dans l'AD avec des groupe en fonction de sa société
- Créer une boite mail pour ce compte dans un serveur Exchange 03
- Créer un homedir sur un serveur de fichier Win2K3 avec les permissions qui vont biens.

GLPI fonctionne déja, et a comme existant une interface pour ajouter un utilisateur à sa base.
L'idée serait de partir de se formulaire (y ajouter quelques champs) pour générer les 3 actions cités plus haut.

J'ai un peu de mal avec GLPI que je ne connais pas bien, les documentations ne m'ont pas vraiment apportées d'éléments de réponse, c'est la raison pour laquelle je me permet d'écrire ce post.

D'avance un grand merci à tous qui m'aideront dans ma tache..

Steven

Offline

#2 2009-03-17 17:14:17

ddurieux
Plugins Dev
From: Propières, France
Registered: 2005-06-17
Posts: 7,521

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

humm, pas rapport à ce que tu veux faire, il faut passer par des commandes système windows (powershell) .

pas simple à mettre en oeuvre

Offline

#3 2009-03-17 17:14:43

remi
GLPI-DEV
From: Champagne
Registered: 2007-04-28
Posts: 7,127
Website

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

Il faut regarder sur les wikis des développeurs.

Dans ton cas, regarder pour l'écriture d'un plugin (modifier le coeur est une très mauvaise idée car elle bloque toutes possibilité de mise à jour vers les versions supérieures)

+


Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/

Offline

#4 2009-03-17 17:25:51

TheHinou
Member
Registered: 2008-07-03
Posts: 434

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

ddurieux wrote:

humm, pas rapport à ce que tu veux faire, il faut passer par des commandes système windows (powershell) .

pas simple à mettre en oeuvre

euh si c'est un serveur 2k3 faut installer powershell avant alors smile

http://www.forum-microsoft.org/topic73248-15.html <--- un thread qui peux t'aider sachant que si tu peux le faire

- via un batch lancé par un exec de ton php (sous serveur windows)
- via un vbs lancé par un exec de ton php  (sous serveur windows)
- faire les modification direct en php via le module ldap/imap mais ca commence a devenir hard


Server : Windows 2003 - Apache 2.2.23 - Php 5.4.11  - Mysql 5.5.30 - Glpi 0.83.7

Offline

#5 2009-03-17 17:29:48

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

en faite, si cela peut aider, j'ai un script VBS qui me fait deja tous ceci.
mais, où dois-je l'insérer et comment?
comment ajouter les champs nécessaire dans ma page de création d'utilisateur, et enfin est-ce que le passage de variable se fait bien entre php et vbs ??

merci pr vos réponses

Offline

#6 2009-03-17 18:15:16

TheHinou
Member
Registered: 2008-07-03
Posts: 434

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

Ouh la ...
Quelles sont tes connaissances en programmation ?
Quelles sont tes connaissances en vbscript et en php ?

Ensuite comment est ton script vbs ?
- il se base sur un fichier pour importer tes comptes ?
- Il se base sur des parametres en lignes de commandes pour créer le comptes ?
- il faut modifier le vbscript ?

As-tu bien compris que le php ne devra qu'appeler le vbs comme tu le ferais toi directement ?


Server : Windows 2003 - Apache 2.2.23 - Php 5.4.11  - Mysql 5.5.30 - Glpi 0.83.7

Offline

#7 2009-03-17 18:28:26

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

Merci TheHinou,
Actuellement le vbs fonctionne via une IHM xml. Donc pas de fichier à lire, mais des champs à remplir. Le code a besoin d'etre adapter a notre environnement, je devrais pouvoir m'en sortir pour cette partie.

Donc il faudra garder le coeur du script vbs et pouvoir les passer les variables via le formulaire php.
Ensuite en php je me débrouille mais les sources de glpi ne sont pas toujours facile à comprendre.

Merci encore pour ton aide.

Offline

#8 2009-03-18 09:49:07

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

up sad

Offline

#9 2009-03-18 12:29:29

TheHinou
Member
Registered: 2008-07-03
Posts: 434

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

Sais-tu qu'un up de la veille pour le lendemain ne sert à rien ? t'es déjà dans les premiers liens

Bon enfin bref

pour lancer un programme : http://fr.php.net/manual/fr/function.shell-exec.php

si le vbscript s'appuye sur un fichier xml il faut éditer le fichier xml avant de lancer le vbscript
si il reçoit des parametre ben dans la commande à envoyer cole y les parametres


Server : Windows 2003 - Apache 2.2.23 - Php 5.4.11  - Mysql 5.5.30 - Glpi 0.83.7

Offline

#10 2009-03-18 13:46:28

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

Désolé pour le up, effectivement il ne sert a rien !

Merci pr ta réponse, j'aimerais maintenant savoir a quel moment l'éxécuter. sad

Voici ma page http://url/front/user.form.php?new=1

$NEEDED_ITEMS=array("user","profile","group","setup","tracking","computer","printer","networking","peripheral","monitor","software","enterprise","phone", "reservation","ldap","entity","rulesengine","rule.right");

define('GLPI_ROOT', '..');
include (GLPI_ROOT . "/inc/includes.php");



if(empty($_GET["ID"])) $_GET["ID"] = "";

if (!isset($_GET["start"])) {
    $_GET["start"]=0;
}

if (!isset($_GET["sort"])) $_GET["sort"]="";
if (!isset($_GET["order"])) $_GET["order"]="";



$user=new User();
if (empty($_GET["ID"])&&isset($_GET["name"])){

    $user->getFromDBbyName($_GET["name"]);
    glpi_header($CFG_GLPI["root_doc"]."/front/user.form.php?ID=".$user->fields['ID']);
}

if(empty($_GET["name"])) $_GET["name"] = "";

if (isset($_POST["add"])) {
    checkRight("user","w");

    // Pas de nom pas d'ajout   
    if (!empty($_POST["name"])){
        $rechercheNumero = false;
        //Vérification de l'existance d'un trigramme, du nom et du prénom
        if(empty($_POST["phone2"]) && !empty($_POST["realname"]) && !empty($_POST["firstname"])){
            $trigramme = $user->createInitials($_POST["realname"],$_POST["firstname"]);
            if(!empty($trigramme)){
                $_POST["phone2"] = strtoupper($trigramme);
            }
        }
       
        //Vérification de l'existance d'un numéro de téléphone
        if(empty($_POST["phone"]) && ($_POST["societe"]>=0)){
            $rechercheNumero = true;
            $phone = $user->createPhone($_POST["societe"]);
            if(!empty($phone)){
                $_POST["phone"] = $phone;
            }
        }
       
        // Test d'affectation d'une date d'inactivité
        if(!empty($_POST['active'])){
            if($_POST['active'] == 0 && $_POST['lastinactive'] == "0000-00-00 00:00:00") $_POST['lastinactive'] = $_SESSION["glpi_currenttime"];
            else if($_POST['active'] == 1 && $_POST['lastinactive'] != "0000-00-00 00:00:00") $_POST['lastinactive'] = null;
        }
       
        // Ajout d'un utilisateur dans la BDD
        $newID=$user->add($_POST);
        if ($rechercheNumero && (!isset($_POST["phone"]) || $_POST["phone"] == null)){
            addMessageAfterRedirect($LANG["inventaireUpdate"][33]);
        }
        logEvent($newID, "users", 4, "setup", $_SESSION["glpiname"]." ".$LANG["log"][20]." ".$_POST["name"].".");
    }
    glpi_header($_SERVER['HTTP_REFERER'] . "?ID=" . $newID);
} else if (isset($_POST["delete"])) {
    checkRight("user","w");
   
    $user->delete($_POST);
    logEvent(0,"users", 4, "setup", $_SESSION["glpiname"]."  ".$LANG["log"][22]." ".$_POST["ID"].".");
    glpi_header($CFG_GLPI["root_doc"]."/front/user.php");
} else if (isset($_POST["restore"]))
{
    checkRight("user","w");
    $user->restore($_POST);
    logEvent($_POST["ID"],"users", 4, "setup", $_SESSION["glpiname"]." ".$LANG["log"][23]);
    glpi_header($CFG_GLPI["root_doc"]."/front/user.php");
}
else if (isset($_POST["purge"]))
{
    checkRight("user","w");
    $user->delete($_POST,1);
   
    logEvent($_POST["ID"], "users", 4, "setup", $_SESSION["glpiname"]." ".$LANG["log"][24]);
    glpi_header($CFG_GLPI["root_doc"]."/front/user.php");

}
else if (isset ($_POST["force_ldap_resynch"]))
{
    checkSeveralRightsAnd(array("user"=>"w", "user_auth_method"=>"w"));
   
    $user->getFromDB($_POST["ID"]);
    ldapImportUserByServerId($user->fields["name"],1,$user->fields["id_auth"]);
    glpi_header($_SERVER['HTTP_REFERER']);
}
else if (isset($_POST["update"])) {
    checkRight("user","w");
    // Test d'affectation d'une date d'inactivité
    if($_POST['active'] == 0 && $_POST['lastinactive'] == "0000-00-00 00:00:00") $_POST['lastinactive'] = $_SESSION["glpi_currenttime"];
    else if($_POST['active'] == 1 && $_POST['lastinactive'] != "0000-00-00 00:00:00") $_POST['lastinactive'] = null;
   

    $user->update($_POST);
    logEvent(0,"users", 5, "setup", $_SESSION["glpiname"]."  ".$LANG["log"][21]."  ".$_POST["name"].".");
    glpi_header($_SERVER['HTTP_REFERER']);
}
else if (isset($_POST["addgroup"]))
{
    checkRight("user","w");

    addUserGroup($_POST["FK_users"],$_POST["FK_groups"]);

    logEvent($_POST["FK_users"], "users", 4, "setup", $_SESSION["glpiname"]." ".$LANG["log"][48]);
    glpi_header($_SERVER['HTTP_REFERER']);
}
else if (isset($_POST["deletegroup"]))
{
    checkRight("user","w");
    if (count($_POST["item"]))
        foreach ($_POST["item"] as $key => $val)
            deleteUserGroup($key);

    logEvent($_POST["FK_users"], "users", 4, "setup", $_SESSION["glpiname"]." ".$LANG["log"][49]);
    glpi_header($_SERVER['HTTP_REFERER']);
}
else if (isset($_POST["addright"]))
{
    checkRight("user","w");

    addUserProfileEntity($_POST);

    logEvent($_POST["FK_users"], "users", 4, "setup", $_SESSION["glpiname"]." ".$LANG["log"][61]);
    glpi_header($_SERVER['HTTP_REFERER']);
}
else if (isset($_POST["deleteright"]))
{
    checkRight("user","w");

    if (isset($_POST["item"])&&count($_POST["item"])){
        foreach ($_POST["item"] as $key => $val){
            deleteUserProfileEntity($key);
        }
        logEvent($_POST["FK_users"], "users", 4, "setup", $_SESSION["glpiname"]." ".$LANG["log"][62]);
    }

    glpi_header($_SERVER['HTTP_REFERER']);
}
elseif (isset($_POST["switch_auth_internal"]))
{
    checkSeveralRightsAnd(array("user"=>"w", "user_auth_method"=>"w"));
   
    $user = new User;
    $input["ID"]=$_POST["ID"];
    $input["auth_method"]=AUTH_DB_GLPI;
    $input["id_auth"]=0;
    $user->update($input);
    glpi_header($_SERVER['HTTP_REFERER']);
}
elseif (isset($_POST["switch_auth_ldap"]))
{
    checkSeveralRightsAnd(array("user"=>"w", "user_auth_method"=>"w"));
   
    $user = new User;
    $input["ID"]=$_POST["ID"];
    $input["auth_method"]=AUTH_LDAP;
    $input["id_auth"]=$_POST["id_auth"];
    $user->update($input);
    glpi_header($_SERVER['HTTP_REFERER']);   
}
elseif (isset($_POST["switch_auth_mail"]))
{
    checkSeveralRightsAnd(array("user"=>"w", "user_auth_method"=>"w"));
   
    $user = new User;
    $input["ID"]=$_POST["ID"];
    $input["auth_method"]=AUTH_MAIL;
    $input["id_auth"]=$_POST["id_auth"];
    $user->update($input);
    glpi_header($_SERVER['HTTP_REFERER']);   
} else {


    if (!isset($_SESSION['glpi_onglet'])) $_SESSION['glpi_onglet']=1;
    if (isset($_GET['onglet'])) {
        $_SESSION['glpi_onglet']=$_GET['onglet'];
    }


    if (!isset($_GET["ext_auth"])){
        checkRight("user","r");

        commonHeader($LANG["title"][13],$_SERVER['PHP_SELF'],"admin","user");

        if ($user->showForm($_SERVER['PHP_SELF'],$_GET["ID"])){
            if (!empty($_GET["ID"]))
            switch($_SESSION['glpi_onglet']){
                case -1:
                    showUserRights($_SERVER['PHP_SELF'],$_GET["ID"]);
                    showGroupAssociated($_SERVER['PHP_SELF'],$_GET["ID"]);
                    showDeviceUser($_GET["ID"]);
                    displayconsommable($_GET["ID"]);
                    showUserReservations($_SERVER['PHP_SELF'],$_GET["ID"]);
                    if (haveRight("show_all_ticket", "1")){
                        showTrackingList($_SERVER['PHP_SELF'],$_GET["start"],$_GET["sort"],$_GET["order"],"all",'','',$_GET["ID"],0);
                    }
                    displayPluginAction(USER_TYPE,$_GET["ID"],$_SESSION['glpi_onglet']);
                    break;
                case 1 :
                    showUserRights($_SERVER['PHP_SELF'],$_GET["ID"]);
                    break;
                case 2 :
                    showDeviceUser($_GET["ID"]);
                    displayconsommable($_GET["ID"]);
                    break;
                case 3 :
                    showTrackingList($_SERVER['PHP_SELF'],$_GET["start"],$_GET["sort"],$_GET["order"],"all",'','',$_GET["ID"],0);
                    break;
                case 4 :
                    showGroupAssociated($_SERVER['PHP_SELF'],$_GET["ID"]);
                    break;
                case 11 :
                    showUserReservations($_SERVER['PHP_SELF'],$_GET["ID"]);
                    break;
                case 12:
                    showSynchronizationForm($_SERVER['PHP_SELF'],$_GET["ID"]);
                    break;
                default :
                    if (!displayPluginAction(USER_TYPE,$_GET["ID"],$_SESSION['glpi_onglet']))
                        showGroupAssociated($_SERVER['PHP_SELF'],$_GET["ID"]);
                    break;
            }
           
        }
        commonFooter();
    } else {
        checkRight("user","w");
       
        if (isset($_GET['add_ext_auth_ldap'])){
            if (isset($_GET['login'])&&!empty($_GET['login'])){
                import_user_from_ldap_servers($_GET['login']);
            }
            glpi_header($_SERVER['HTTP_REFERER']);
        }
        if (isset($_GET['add_ext_auth_simple'])){
            if (isset($_GET['login'])&&!empty($_GET['login'])){
                $user->add(array('name'=>$_GET['login'],'_extauth'=>1));
            }
            glpi_header($_SERVER['HTTP_REFERER']);
        }

        commonHeader($LANG["title"][13],$_SERVER['PHP_SELF'],"admin","user");
        showAddExtAuthUserForm($_SERVER['PHP_SELF']);
        commonFooter();
    }
}





?>

Offline

#11 2009-03-18 14:07:09

remi
GLPI-DEV
From: Champagne
Registered: 2007-04-28
Posts: 7,127
Website

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

Partant du principe que modifier la page d'origine de GLPI est une très mauvaise idée...

Il faut faire un plugin qui utilise le hook item_add pour traiter l'évenement d'ajout d'un utilisateur.

+


Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/

Offline

#12 2009-03-18 14:09:05

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

peux tu me donner un peu plus de précision stp ?

Offline

#13 2009-03-18 14:14:13

remi
GLPI-DEV
From: Champagne
Registered: 2007-04-28
Posts: 7,127
Website

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

Oui : en haut de la page tu as un lien sur le site du projet, puis un lien ressource, puis un lien vers les 2 wiki de développements (GLPI et Plugin) qui contiennent toutes les informations dont tu as besoin.

+.


Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/

Offline

#14 2009-03-18 14:24:23

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

je vois bien la liste des plugins, mais cela ne m'aide pas vraiment étant donnée qu'il n'y pas le plugins qui pourrait me convenir..

Offline

#15 2009-03-18 14:28:31

wawa
GLPI-DEV
From: Montpellier / France
Registered: 2006-07-03
Posts: 6,019
Website

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

stevenhab wrote:

je vois bien la liste des plugins, mais cela ne m'aide pas vraiment étant donnée qu'il n'y pas le plugins qui pourrait me convenir..

normal vous n'en trouverez pas qui en conviennent
vous devez développer votre propre plugin comme remi vous l'a dit
la doc est sur http://dev.indepnet.net/plugins/
et un plugin example fournit un exemple de ce qui peut-être fait

donc à vous de coder !

Offline

#16 2009-03-18 15:16:33

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

ton lien ne fonctionne pas visiblement

Offline

#17 2009-03-18 15:25:11

ddurieux
Plugins Dev
From: Propières, France
Registered: 2005-06-17
Posts: 7,521

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

Offline

#18 2009-03-18 15:40:27

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

cela m'a l'air vraiment complexe.. sad

Offline

#19 2009-03-18 15:41:23

ddurieux
Plugins Dev
From: Propières, France
Registered: 2005-06-17
Posts: 7,521

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

en même temps, ce que tu veux faire n'est pas simple

Offline

#20 2009-03-18 15:44:17

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

je veux récuperer les variables saisies dans un formulaire existant (et ajouter d'autre champs à ce forlulaire) et executer mon script vbs en passant ces variables en argument.

Offline

#21 2009-03-18 18:35:41

TheHinou
Member
Registered: 2008-07-03
Posts: 434

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

ben édite le fichier qui reçoit les informations de ce formulaire.

A noté que c'est un peu dangereux comme concept car en fonction de l'endroit ou tu vas faire executer ton script tu peux te retrouver avec une création d'utilisateur non désiré par n'importe qui ...


Server : Windows 2003 - Apache 2.2.23 - Php 5.4.11  - Mysql 5.5.30 - Glpi 0.83.7

Offline

#22 2009-03-18 18:40:49

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

TheHinou wrote:

ben édite le fichier qui reçoit les informations de ce formulaire.

A noté que c'est un peu dangereux comme concept car en fonction de l'endroit ou tu vas faire executer ton script tu peux te retrouver avec une création d'utilisateur non désiré par n'importe qui ...

tu as une autre solution ?
sinon, comment ajouter des champs au formulaire? je ne vois pas le code html...

Offline

#23 2009-03-19 14:00:12

TheHinou
Member
Registered: 2008-07-03
Posts: 434

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

une autre solution ?

personnelement je le ferais dans l'autre sens ...

Utiliser le script vbs pour générer le compte + mail + homedir.

si le besoin est de donner des droits particulier sur glpi ben j'adapterais le script pour qu'il crée l'utilistateur dans glpi en lui donnant les bon droit ...

Ca t'évite
-  d'avoir à modifier glpi et donc d'avoir à modifier à chaque nouvelle version
- de donner des droit d'ecriture ldap à ton utilisateur apache pour qu'il puisse lancer le script vbs sans qu'il plante

et ainsi seul un admin ou une personne mandaté peux ajouter le compte (ca évite les probleme de "j'ai mis le code au mauvais endroit et n'importe qui peux se rajouter")


Server : Windows 2003 - Apache 2.2.23 - Php 5.4.11  - Mysql 5.5.30 - Glpi 0.83.7

Offline

#24 2009-03-21 18:32:09

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

merci pour ton aide.
au nive

Offline

#25 2009-03-21 18:33:40

stevenhab
Member
Registered: 2009-03-12
Posts: 14

Re: [AIDE] Création utilisateur dans AD + homedir + boite mail.

dsl suite

au niveau de GLDP je m'en fou des droits, c'est deja géré ca.
maintenant je voudrais juste ajouter des champs au formulaire user.form.php et utiliser les arguements du formulaire compléter pour les passer à mon script vbs

Offline

Board footer

Powered by FluxBB