You are not logged in.
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
humm, pas rapport à ce que tu veux faire, il faut passer par des commandes système windows (powershell) .
pas simple à mettre en oeuvre
Offline
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
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
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
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
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
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
up
Offline
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
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.
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
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
peux tu me donner un peu plus de précision stp ?
Offline
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
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
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
ton lien ne fonctionne pas visiblement
Offline
Offline
cela m'a l'air vraiment complexe..
Offline
en même temps, ce que tu veux faire n'est pas simple
Offline
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
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
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
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
merci pour ton aide.
au nive
Offline
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