Suppression gestion des arrivées/départ

This commit is contained in:
Cédric COURALET 2024-07-09 07:45:34 +02:00
parent af492548c7
commit ad3d026ee8
4 changed files with 0 additions and 939 deletions

View File

@ -1,82 +0,0 @@
# Gestion des arrivées/départs au GENES (hors ENSAI)
## Elèves
### Arrivées
```mermaid
flowchart TB
start(" Admis ENSAE") --> Inscription("Inscription ENSAE")
start-ipp("Admis Master Ip-Paris") --> Inscription-ipp(Inscription Ip-Paris)
subgraph X
Inscription-ipp --> Isiatis
Isiatis --> Inscription
end
subgraph eleves
Inscription --> Validation
end
subgraph DSIT
Validation --> creation("Création du compte, profil mail")
creation --> ajout-liste("Ajout dans les listes de diffusions élèves")
creation --> publication("Affichage des informations du compte<br/> sur site d'inscription")
Validation --> creation-pamplemousse("Création de l'étudiant dans pamplemousse")
creation --> lien-compte("Lien compte pamplemousse avec compte AD")
creation --> licence("Attribution Licence O365")
end
subgraph Scolarité
creation-pamplemousse --> creation-badge("Création des badges élèves")
end
```
!!! note
le [script de création de compte ](./eleves/creation-compte.php) est appelé directement depuis le site d'inscription une fois celle ci validée. Le compte est créé directement dans la bonne OU (de l'année en cours) avec une date d'expiration au 01/09/N+3. Certains groupes sont ajoutés par défaut :
* ClearPass-ETUDIANT
* MesDossiers_Paradis
* PromotionsENSAE
l'ajout des listes de diffusion se fait à partir des informations pamplemousse (voie de l'étudiant)
Création des badges ??
#### Départ
Compte Expire ...
Suppression mail/ad/profil ???
## Agent Genes Administratif (SG et/ou ENSAE)
### Arrivées
```mermaid
graph LR
subgraph SRH
signature("Recrutement d'un agent") --> Init-fa("Initialisation Fiche Arrivée")
Finalisation-fa-->creation-ticket("Création Ticket pour support DSIT")
Finalisation-fa --> creation-badge("Création badge d'acces")
end
subgraph Recruteur
Init-fa-->Complement-fa("Ajout Fiche Arrivée")
Complement-fa --> Affectation-bureau("Décision sur le bureau")
Complement-fa --> Ajout-role-service("Ajout des logiciels,services et équipements nécessaires")
Ajout-role-service--> Finalisation-fa("Signature FA")
Affectation-bureau --> Finalisation-fa
end
subgraph DSIT
creation-ticket --> creation-compte("Création Compte Profil Mail")
creation-ticket --> Installation-locale
end
subgraph LOG
creation-ticket -.-> amenagement-bureau("Transfert Logistique pour aménagement bureau")
end
```

View File

@ -1,750 +0,0 @@
<?php
// pour faire des tests à la main : https://administration-annuaire.ensae.fr/
error_reporting(E_ERROR | E_WARNING | E_PARSE);
header('Content-Type: text/html; charset=utf-8');
$valid_users = array(
'ensae\\tmouhtadi',
'ensae\\clagarde',
'ensae\\fhocde',
'ensae\\jmerat',
'ensae\\credentialsensae'
);
$current_user = strtolower( $_SERVER['REMOTE_USER'] );
if( !in_array($current_user, $valid_users) ) {
header("HTTP/1.1 401 Unauthorized");
exit("Vous n'êtes pas autorisé. Veuillez contacter le service Informatique.");
}
?>
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
<?php
//##############constante###############
$id = $_POST['id']; // l id est recupere du site inscription en ligne celui ci est retourné sans être touché
//il faut simuler la date d'expiration dans l'AD et récupérer la valeur générée dans l'attribut (AccountExpires).
// le 30 juin 2024 pour une rentrée en 2022
// 30/06/2025
$DateExpiration = "133957944000000000";
$wifi = "CN=ClearPass-ETUDIANT,OU=Comptes de service,OU=Genes,DC=ensae,DC=fr";
$PromotionsENSAE = "CN=PromotionsENSAE,OU=Groupes,OU=Eleves,OU=ENSAE,OU=Genes,DC=ensae,DC=fr";
$MesDossiers = "CN=MesDossiers_Paradis,OU=Comptes et groupes systèmes,OU=Genes,DC=ensae,DC=fr";
// Les groupes doivent etre tous dans la meme OU et utiliser ce chemin :
$BaseGroupe = ",OU=Groupes,OU=Eleves,OU=ENSAE,OU=Genes,DC=ensae,DC=fr";
//changer simplement l année
$BaseUtilisateur = "OU=2023,OU=Utilisateurs,OU=Eleves,OU=ENSAE,OU=Genes,DC=ensae,DC=fr";
$datetime = date("d-m-Y H:i:s");
//#######################################
$EtudiantMail=$_POST['EtudiantMail'];
//alias email si on souhaite rajouter une adresse supplementaire
$alias=$_POST['alias'];
// ###################################################
//EtatCompte est utilise pour savoir si c est un nouveau compte ou un prolongement de compte 0 = Nouveau et 1 = Prolongement
if(empty($_POST['EtatCompte'])) {
$EtatCompte = 0;
} else {
$EtatCompte=$_POST['EtatCompte'];
}
// Variables pour connexion LDAPs
$ldapserver = "ldaps://172.16.110.10";
$ldapuser = "ensae\administrationannuai";
$ldappass = "************";
$ldapdn = "OU=Genes,DC=ensae,DC=fr";
if(isset($_POST['voie']))
$voie=$_POST['voie'];
if(isset($_POST['nom']))
$nom=$_POST['nom'];
else $nom="";
if(isset($_POST['prenom']))
$prenom=$_POST['prenom'];
else $prenom="";
// Si on souhaite ajouter la condition de l'appartenance a un groupe : if(empty($nom) OR empty($prenom) OR empty($voie))
if(empty($nom) OR empty($prenom))
{
if($EtatCompte == 0){
echo '<font color="red">Attention,un champ est vide, nous ne pouvons poursuivre la demande. </font>';
die();
}
} // on verifie le champ prénom
elseif (preg_match('/[\^£$%&*()}{@#~?><>,|=_\\\\\;+¬]/', $prenom))
{
echo 'Le champ prénom contient un caractère spécial.';// one or more of the 'special characters' found in $string
die();
}
elseif (preg_match('~[0-9]~', $prenom))
{
echo 'Le champ prénom contient un caractère spécial.';
die();
}
// on vérifie le champ nom
elseif (preg_match('/[\^£$%&*()}{@#~?><>,|=_\\\\\;+¬]/', $nom))
{
echo 'Le champ nom contient un caractère spécial.';
die();
}
elseif (preg_match('~[0-9]~', $nom))
{
echo 'Le champ nom contient un caractère spécial.';
die();
}
// sinon ...
else
{
$unwanted_array = array( 'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U',
'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c',
'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o',
'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y' );
// on supprime les espaces du prenom
//$prenom = preg_replace('/\s+/', '', $prenom);
// si le prenom contient un trait d'union
if (strpos($prenom, '-') !== false) {
// delimiteur trait d'union
$prenom1 = explode("-", $prenom);
$prenom1[0] = ucfirst(strtolower($prenom1[0]));
$prenom1[1] = ucfirst(strtolower($prenom1[1]));
$prenom = $prenom1[0].'-'.$prenom1[1];
//echo 'dans la boucle';
//echo $prenom;
} else {
$prenom = ucfirst(strtolower($prenom));
}
//$prenom = ucfirst(strtolower($prenom));
// Tout en MAJUSCULE en gardant les accents
$nom = mb_strtoupper($nom, 'UTF-8');
// On supprime les accents
$prenom2 = strtr( $prenom, $unwanted_array );
// on ne garde que les lettres du prenom
$prenom2 = preg_replace("/[^a-zA-Z]-/", "", $prenom2);
// on recupere le premier caractere du prénom
$FirstChar = $prenom2[0];
// on supprime les espaces du nom
$nom2 = preg_replace('/\s+/', '', $nom);
$nom2 = strtr( $nom2, $unwanted_array );
//$FirstChar = strtr( $FirstChar, $unwanted_array );
// On concatene premiere lettre prenom avec le nom
$login = $FirstChar.$nom2;
// on met tout en minuscule
$login = strtolower($login);
// on prend les 20 premiers caracteres
$login = substr($login,0,20);
// on ne garde que les lettres
$login = preg_replace("/[^a-zA-Z]/", "", $login);
// on supprime les accents, apostrophe et trait d'union :
$prenom_mail = preg_replace("/[^a-zA-Z]-/", "", $prenom2);
$prenom_mail = preg_replace('/\s+/', '', $prenom_mail);
$prenom_mail = str_replace("'", '', $prenom_mail);
$nom2_mail = preg_replace("/[^a-zA-Z]-/", "", $nom2);
$nom2_mail = str_replace("'", '', $nom2);
//SMTP PINCIPAL
$email = $prenom_mail.".".$nom2_mail;
$email = substr($email,0,64);
//$email = $email."@ensae-paristech.fr";
$email = $email."@ensae.fr";
$email = strtr( $email, $unwanted_array );
$email = strtolower($email);
// ALIAS
$alias = $prenom_mail.".".$nom2_mail."@ensae.fr";
$alias = strtr( $alias, $unwanted_array );
$alias = strtolower($alias);
// ON AFFICHE
$password = generateStrongPassword();
$N = count($voie);
/* echo "Bonjour ".$prenom." ".$nom ;
echo "</br>";
echo "Votre login est ".$login;
echo "</br>";
$password = generateStrongPassword();
echo "Votre mot de passe est : ".$password;
echo "</br>";
echo "Votre adresse email est ".$email;
echo "</br>";
$N = count($voie);
echo("Selection de $N voie(s): ");
echo "</br>";
for($i=0; $i < $N; $i++)
{
echo($voie[$i] . "<br>");
}
echo "</br>";
echo '</br><a href="#" OnClick="javascript:window.print()">Imprimer</a>';
foreach($voie as $value)
{
echo '<input type="hidden" name="voie[]" value="'. $value. '">';
} */
}
function generateStrongPassword($length = 12, $add_dashes = false, $available_sets = 'lud')
{
$sets = array();
if(strpos($available_sets, 'l') !== false)
$sets[] = 'abcdefghjkmnpqrstuvwxyz';
if(strpos($available_sets, 'u') !== false)
$sets[] = 'ABCDEFGHJKMNPQRSTUVWXYZ';
if(strpos($available_sets, 'd') !== false)
$sets[] = '23456789';
if(strpos($available_sets, 's') !== false)
$sets[] = '!@#$%&*?';
$all = '';
$password = '';
foreach($sets as $set)
{
$password .= $set[array_rand(str_split($set))];
$all .= $set;
}
$all = str_split($all);
for($i = 0; $i < $length - count($sets); $i++)
$password .= $all[array_rand($all)];
$password = str_shuffle($password);
if(!$add_dashes)
return $password;
$dash_len = floor(sqrt($length));
$dash_str = '';
while(strlen($password) > $dash_len)
{
$dash_str .= substr($password, 0, $dash_len) . '-';
$password = substr($password, $dash_len);
}
$dash_str .= $password;
return $dash_str;
}
$filter="(mail=$email)";
$FilterEmailExist="(mail=$EtudiantMail)";
$filter2="(samaccountname=$login)";
// Connexion LDAPs
$ldapconn = ldap_connect($ldapserver) or die("Could not connect to LDAP server.");
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
// ******************************************************
if($ldapconn)
{
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappass) or die ("Error trying to bind: ".ldap_error($ldapconn));
// verify binding
if ($ldapbind)
{
// echo "LDAP bind successful...<br /><br />";
//echo "</br>".$login;
//echo "</br>".$email;
// recherche par rapport a l email
$result = ldap_search($ldapconn, $ldapdn, $filter) or die ("Error in search query: ".ldap_error($ldapconn));
// recherche par rapport au login
$result2 = ldap_search($ldapconn, $ldapdn, $filter2) or die ("Error in search query: ".ldap_error($ldapconn));
$SearchMailExist = ldap_search($ldapconn, $ldapdn, $FilterEmailExist) or die ("Error in search query: ".ldap_error($ldapconn));
$data = ldap_get_entries($ldapconn, $result);
$data2 = ldap_get_entries($ldapconn, $result2);
//echo "</br>".$data2['count'];
//echo "</br>".$data['count'];
$ResultMailExist = ldap_get_entries($ldapconn, $SearchMailExist);
// SHOW ALL DATA
// echo '<h1>Dump all data</h1><pre>';
//print_r($ResultMailExist);
//echo '</pre>';
//echo $data[0]["mail"];
// iterate over array and print data for each entry
for ($i=0; $i<$data["count"]; $i++)
{
//echo "dn is: ". $data[$i]["dn"] ."<br />";
//echo "User: ". $data[$i]["cn"][0] ."<br />";
if(isset($data[$i]["mail"][0]))
{
$mail = $data[$i]["mail"][0];
//echo '<h1>LE COMPTE EXISTE</h1>';
//echo "Le mail ". $mail ." existe. <br /><br />";
}
}
for ($j=0; $j<$data2["count"]; $j++)
{
if(isset($data2[$j]["samaccountname"][0]))
{
$logon = $data2[$j]["samaccountname"][0];
//echo '<h1>LE COMPTE exsite_email</h1>';
//echo "Le compte ". $logon ." exsite. <br /><br />";
}
}
// on compte le nombre d email identique dans l'AD
$exsite_email = ldap_count_entries($ldapconn, $result);
// on compte le nombre de login identique dans l'AD
$exsite_login = ldap_count_entries($ldapconn, $result2);
/* UTILE POUR AFFICHER SI UN UTILISATEUR EXISTE
echo "</br>Nombre d email existant".$exsite_email ;
echo "</br>Nombre de login existant".$exsite_login ; */
// On encode le mot de passe pour pouvoir activer le compte (Obligatoire)
$newPassword = $password;
$newPassw = "";
$newPassword = "\"" . $newPassword . "\"";
$len = strlen($newPassword);
for ($i = 0; $i < $len; $i++)
$newPassw .= "{$newPassword{$i}}\000";
$newPassword = $newPassw;
//si pas d homonyme (le compte n exsite_email pas) alors on le crée
if ($exsite_email == 0 && $exsite_login == 0 && $EtatCompte == 0)
{
$cn = $nom." ".$prenom;
$basedn = "CN=$cn,$BaseUtilisateur";
//$adduserAD["cn"][0] =
//$adduserAD["instancetype"][0] =
$adduserAD["samaccountname"][0] = $login;
$adduserAD["userprincipalname"][0] = $prenom.".".$nom."@ensae.fr";
$adduserAD["objectclass"][0] = "top";
$adduserAD["objectclass"][1] = "person";
$adduserAD["objectclass"][2] = "organizationalPerson";
$adduserAD["objectclass"][3] = "user";
$adduserAD["displayname"][0] = $nom." ".$prenom;
$adduserAD["name"][0] = $nom;
$adduserAD["unicodePwd"][0] = $newPassword;
$adduserAD["userAccountControl"][0] = 544;
$adduserAD["accountExpires"][0] = $DateExpiration;
//$adduserAD["scriptPath"][0] = "";
$adduserAD["homeDirectory"][0] = "\\\paradis\\eleves\\".$login ;
$adduserAD["homeDrive"][0] = "W:";
$adduserAD["profilepath"][0] = "\\\paradis\profils\\".$login;
$adduserAD["givenname"][0] = $prenom;
$adduserAD["sn"][0] = $nom;
//$adduserAD["company"][0] = "";
//$adduserAD["department"][0] = "";
//$adduserAD["title"][0] = "";
$adduserAD["description"][0] = "Eleve de l'ENSAE";
//$adduserAD["mail"][0] = $email;
//$adduserAD["initials"][0] = "";
// on CREE le compte
$r = ldap_add($ldapconn, $basedn, $adduserAD);
if ($r == true) {
$resultatcompte = 0 ;
} else {
echo "ERREUR DANS LA CREATION DU COMPTE AD</br>";
//var_dump ($r);
$resultatcompte = 1 ;
}
// ON AJOUTE L UTILISATEUR AUX GROUPES CORRESPONDAND AUX VOIES SELECTIONNEES
// on compte combien de groupes sont séléctionnés
$N = count($voie);
for($i=0; $i < $N; $i++)
{
$dn = "CN=$voie[$i]$BaseGroupe";
//echo $dn;
//echo "</br>";
$entry["member"] = $basedn;
$result_group = @ldap_mod_add($ldapconn, $dn, $entry);
if ($result_group == false) {
echo "ERREUR RENCONTREE DANS L AJOUT DES GROUPES/VOIES</br>";
$resultatgroupe = "NOK";
}
}
// ajout par défaut du groupe ClearPass-ETUDIANT pour acces WIFI, PromotionsENSAE et Mesdossiers_Paradis
$entry["member"] = $basedn;
$wifiGroupe = @ldap_mod_add($ldapconn, $wifi, $entry);
$PromotionsENSAEGroupe = @ldap_mod_add($ldapconn, $PromotionsENSAE, $entry);
$MesDossiersGroupe = @ldap_mod_add($ldapconn, $MesDossiers, $entry);
//*****************ON CREE LA MESSAGERIE********************************
$cmd = "powershell.exe C:\\wamp64\\www\\administrationAD\\creation-mail.ps1 $login $email $alias 2>&1";
try {
set_time_limit(300);
$execmail = shell_exec($cmd);
$resultatmail = 0 ;
//echo $resultatmail;
}
catch(Exception $e)
{
echo "Erreur lancement script création mail";
//var_dump($e);
$resultatmail = 1 ;
exit;
}
//***************** ON CREE HOMEDIRECTORY + ACL ********************************
$cmd2 = "powershell.exe C:\\wamp64\\www\\administrationAD\\homedirectory.ps1 $login 2>&1";
try {
set_time_limit(300);
$exechomedir = shell_exec($cmd2);
$resultathomedir = 0 ;
//echo $resultathomedir;
}
catch(Exception $ex)
{
echo "Erreur lancement script creation home directory";
$resultathomedir = 1 ;
//var_dump($ex);
exit;
}
// ON AFFICHE LES INFOS COMPLETES
echo "</br>Bonjour ".$prenom." ".$nom ;
echo "</br>";
echo "Votre login est ".$login;
echo "</br>";
echo "Votre mot de passe est : ".$newPassword;
echo "</br>";
echo "Votre adresse email est ".$email;
echo "</br>";
$N = count($voie);
echo("Selection de $N voie(s): ");
echo "</br>";
for($i=0; $i < $N; $i++)
{
echo($voie[$i] . "<br>");
}
//echo '</br><a href="#" OnClick="javascript:window.print()">Imprimer</a>';
}
//NOUVEL UTILISATEUR MAIS IL exsite_email UN COMPTE SIMILAIRE DANS L AD
elseif ($exsite_email > 0 || $exsite_login > 0)
{
if ($EtatCompte == 0)
{
echo "Compte existant, on crée un nouveau compte en ajoutant la deuxieme lettre du prenom dans le login </br>";
$unwanted_array = array( 'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U',
'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c',
'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o',
'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y' );
// le point entre le prenom et le nom sera remplacé par underscore _
$email = $prenom_mail."_".$nom2_mail;
$email = substr($email,0,64);
//$email = $email."@ensae-paristech.fr";
$email = $email."@ensae.fr";
$email = strtr( $email, $unwanted_array );
$email = strtolower($email);
// on crée un nouveau login formé par les 2premieres lettre du prenom puis le nom
$prenomFirstLetter = $prenom2[0];
$prenomSecondLetter = $prenom2[1];
$prenom2letter = $prenomFirstLetter.$prenomSecondLetter;
$login = $prenom2letter.$nom2;
$login = strtolower($login);
$login = strtolower($login);
// on prend les 20 premiers caracteres
$login = substr($login,0,20);
// on ne garde que les lettres
$login = preg_replace("/[^a-zA-Z]/", "", $login);
echo "Le login sera : ".$login."</br>";
$cn = $nom.".".$prenom;
$basedn = "CN=$cn,$BaseUtilisateur";
$adduserAD["samaccountname"][0] = $login;
$adduserAD["userprincipalname"][0] = $prenom2letter.".".$nom2."@ensae.fr";
$adduserAD["objectclass"][0] = "top";
$adduserAD["objectclass"][1] = "person";
$adduserAD["objectclass"][2] = "organizationalPerson";
$adduserAD["objectclass"][3] = "user";
$adduserAD["displayname"][0] = $nom." ".$prenom;
$adduserAD["name"][0] = $nom;
$adduserAD["unicodePwd"][0] = $newPassword;
$adduserAD["userAccountControl"][0] = 544;
$adduserAD["accountExpires"][0] = $DateExpiration;
$adduserAD["homeDirectory"][0] = "\\\paradis\\eleves\\".$login ;
$adduserAD["homeDrive"][0] = "W:";
$adduserAD["profilepath"][0] = "\\\paradis\profils\\".$login;
$adduserAD["givenname"][0] = $prenom;
$adduserAD["sn"][0] = $nom;
$adduserAD["description"][0] = "Eleve de l'ENSAE";
// on CREE le compte
$re = @ldap_add($ldapconn, $basedn, $adduserAD);
if ($re == true) {
$resultatcompte = 0 ;
} else {
echo "ERREUR DANS LA CREATION DU COMPTE AD</br>";
$resultatcompte = 1 ;
}
// ON AJOUTE L UTILISATEUR AUX GROUPES CORRESPONDAND AUX VOIES SELECTIONNEES
// on compte combien de groupes sont séléctionnés
$N = count($voie);
for($i=0; $i < $N; $i++)
{
$dn = "CN=$voie[$i]$BaseGroupe";
//echo $dn;
echo "</br>";
$entry["member"] = $basedn;
$result_group = @ldap_mod_add($ldapconn, $dn, $entry);
if ($result_group == false) {
echo "ERREUR RENCONTREE DANS L AJOUT DES GROUPES/VOIES</br>";
}
}
// ajout par défaut du groupe ClearPass-ETUDIANT pour acces WIFI
$wifiGroupe = @ldap_mod_add($ldapconn, $wifi, $entry);
$PromotionsENSAEGroupe = @ldap_mod_add($ldapconn, $PromotionsENSAE, $entry);
$MesDossiersGroupe = @ldap_mod_add($ldapconn, $MesDossiers, $entry);
//*****************ON CREE LA MESSAGERIE********************************
$cmd = "powershell.exe C:\\wamp64\\www\\administrationAD\\creation-mail.ps1 $login $email $alias";
try {
set_time_limit(300);
$execmail = shell_exec($cmd);
$resultatmail = 0 ;
//echo "<pre>";
//echo($output);
}
catch(Exception $e)
{
echo "Erreur sur la création de la messagerie";
// var_dump($e);
$resultatmail = 1 ;
exit;
}
//***************** ON CREE HOMEDIRECTORY + ACL ********************************
$cmd2 = "powershell.exe C:\\wamp64\\www\\administrationAD\\homedirectory.ps1 $login";
try {
set_time_limit(300);
$exechomedir = shell_exec($cmd2);
$resultathomedir = 0 ;
//echo($resultathomedir);
}
catch(Exception $ex)
{
echo "Erreur lancemeny script Home directory";
//var_dump($ex);
$resultathomedir = 1 ;
exit;
}
// ON AFFICHE LES INFOS COMPLETES
echo "Bonjour ".$prenom." ".$nom ;
echo "</br>";
echo "Votre login est ".$login;
echo "</br>";
echo "Votre mot de passe est : ".$newPassword;
echo "</br>";
echo "Votre adresse email est ".$email;
echo "</br>";
$N = count($voie);
echo("Selection de $N voie(s): ");
echo "</br>";
for($i=0; $i < $N; $i++)
{
echo($voie[$i] . "<br>");
}
//echo '</br><a href="#" OnClick="javascript:window.print()">Imprimer</a>';
}
else
{
echo "Ce n'est pas un nouveau compte";
}
}
// TRAITEMENT DES PROLONGATIONS DES COMPTES
if ($EtatCompte == 1)
{
// pour afficher la date de valide du compte initial
echo "</br>Date d expiration actuelle : ".$ResultMailExist[0]['accountexpires'][0]."</br>";
echo $ResultMailExist[0]['distinguishedname'][0];
$dn = $ResultMailExist[0]['distinguishedname'][0];
$entry['accountexpires'][0] = $DateExpiration;
$result_dateexpiration = @ldap_mod_replace($ldapconn, $dn, $entry);
if ($result_dateexpiration == true)
{
echo "</br>Prolongement effectué</br>";
$resultatprolongation = 0;
} else {
echo "<b><span style='color:red;'> Erreur rencontré sur le prolongement</span></b></br>";
echo "</br>debug : mail reçu : ".$EtudiantMail."</br>";
$resultatprolongation = 1;
}
// on ajoute les nouveaux groupes à l'utilisateur
$N = count($voie);
echo "Nombre de groupe selectionné : ".$N."</br>";
for($i=0; $i < $N; $i++)
{
$GroupeSelection = "CN=$voie[$i]$BaseGroupe";
$Groupe['member'] = $ResultMailExist[0]['distinguishedname'][0];
$result_group = @ldap_mod_add($ldapconn, $GroupeSelection, $Groupe);
if ($result_group == true) {
echo "</br>Ajout du groupe : ".$voie[$i]."</br>";
} else { echo "L'utilisateur est probablement déjà membre du groupe ".$voie[$i]."</br>"; }
}
$promoENSAE['member'] = $ResultMailExist[0]['distinguishedname'][0];
$result_promoENSAE = @ldap_mod_add($ldapconn, $PromotionsENSAE, $promoENSAE);
if ($result_promoENSAE == true) {
echo "Ajout du groupe : PromotionsENSAE</br>";
} else { echo "L'utilisateur est probablement déjà membre du groupe PromotionsENSAE </br>"; }
$GroupMember['member'] = $ResultMailExist[0]['distinguishedname'][0];
$result_wifiGroupe = @ldap_mod_add($ldapconn, $wifi, $GroupMember);
if ($result_wifiGroupe == true) {
echo "Ajout du groupe : ClearPass-ETUDIANT (WIFI)</br>";
} else { echo "L'utilisateur est probablement déjà membre du groupe Wifi </br>"; }
// if (result_dateexpiration == true)
// {
// $resultatprolongation = "Succès";
// } else {
// $resultat = "Echec";
// }
//
$email = $EtudiantMail ;
}
// CREATION DU FICHIER UTILISATEUR
$newuser[] = array("$nom", "$prenom", "$password", "$login", "$email", "$resultatcompte", "$resultathomedir", "$resultatmail", "$datetime" );
//print_r($newuser);
// Paramétrage de l'écriture du futur fichier CSV
$chemin = 'eleves2023.csv';
$delimiteur = ','; // Pour une tabulation, utiliser $delimiteur = "t";
$fichier_csv = fopen($chemin, 'a');
// Si votre fichier a vocation a être importé dans Excel,
// vous devez impérativement utiliser la ligne ci-dessous pour corriger
// les problèmes d'affichage des caractères internationaux (les accents par exemple)
fprintf($fichier_csv, chr(0xEF).chr(0xBB).chr(0xBF));
// chaque ligne en cours de lecture est insérée dans le fichier
// les valeurs présentes dans chaque ligne seront séparées par $delimiteur
foreach($newuser as $ligne)
{
fputcsv($fichier_csv, $ligne);
}
// fermeture du fichier csv
fclose($fichier_csv);
if ($resultatcompte == 0 && $resultathomedir == 0 && $resultatmail == 0 ) {
//$resultat = "Le compte ".$login." a bien été crée, email : ".$email.", mot de passe : ".$password ;
$resultat = "Succès";
echo "</br>L'ajout du compte à été réalisé sans erreur.";
} else {
$resultat = "Echec";
echo "</br>Un problème est survenu à la création du compte ou son prolongement.";
}
// Pas d'erreur rencontrée
if ($EtatCompte == 0) {
?>
<form action="https://inscription.ensae.fr/index.php/comptead/retour" id="formAD" name="formAD" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<input type="hidden" name="resultat" value="<?php echo $resultat; ?>" />
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<input type="hidden" name="login" value="<?php echo $login; ?>" />
<input type="hidden" name="email" value="<?php echo $email; ?>" />
<input type="hidden" name="password" value="<?php echo $password; ?>" />
<input type="submit"/>
</form>
<!--script>formAD.submit();</script-->
<?php
}
// si erreur rencontrée
if ($EtatCompte == 1) {
?>
<form action="https://inscription.ensae.fr/index.php/comptead/retour" id="formAD" name="formAD" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<input type="hidden" name="resultat" value="<?php echo $resultat; ?>" />
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<input type="hidden" name="email" value="<?php echo $email; ?>" />
<input type="submit"/>
</form>
<?php
}
} else {
echo "LDAP bind failed...";
}
}
// all done clean up
ldap_close($ldapconn);
?>
</body>
</html>

View File

@ -1,22 +0,0 @@
$login = $args[0];
$email = $args[1];
$alias = $args[2];
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://sp-exch01.ensae.fr/PowerShell/ -Authentication Kerberos
Import-PSSession $Session -DisableNameChecking -AllowClobber | Out-Null
try {
Enable-Mailbox -Identity $login -Database "DB01_ELEVES-SP-EXCH01" -Alias $login -PrimarySmtpAddress $email | Out-Null
write-host "0"
}
catch {
write-host "1"
}
Remove-PSSession $Session

View File

@ -1,85 +0,0 @@
$login = $args[0];
$basehomedirectory = "\\paradis\eleves\";
$homedirectory = $basehomedirectory + $login;
$domain = "ENSAE\"
$user = $domain + $login ;
if(!(Test-Path -Path $homedirectory )){
New-Item -Path $homedirectory -ItemType directory | Out-Null
#Define FileSystemAccessRights:identifies what type of access we are defining, whether it is Full Access, Read, Write, Modify
$FileSystemAccessRights = [System.Security.AccessControl.FileSystemRights]"FullControl"
#define InheritanceFlags:defines how the security propagates to child objects by default
#Very important - so that users have ability to create or delete files or folders
#in their folders
$InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]::"ContainerInherit", "ObjectInherit"
#Define PropagationFlags: specifies which access rights are inherited from the parent folder (users folder).
$PropagationFlags = [System.Security.AccessControl.PropagationFlags]::None
#Define AccessControlType:defines if the rule created below will be an 'allow' or 'Deny' rule
$AccessControl =[System.Security.AccessControl.AccessControlType]::Allow
#define a new access rule to apply to users folfers
$acl1 = New-Object System.Security.AccessControl.FileSystemAccessRule `
("Admins du domaine", $FileSystemAccessRights, $InheritanceFlags, $PropagationFlags, $AccessControl)
$acl2 = New-Object System.Security.AccessControl.FileSystemAccessRule `
("Système", $FileSystemAccessRights, $InheritanceFlags, $PropagationFlags, $AccessControl)
$acl3 = New-Object System.Security.AccessControl.FileSystemAccessRule `
($login, $FileSystemAccessRights, $InheritanceFlags, $PropagationFlags, $AccessControl)
$acl4 = New-Object System.Security.AccessControl.FileSystemAccessRule `
("administrationannuai", $FileSystemAccessRights, $InheritanceFlags, $PropagationFlags, $AccessControl)
#ACL Admins du domaine
$rule1 = Get-ACL -path $homedirectory
#Add this access rule to the ACL
$rule1.SetAccessRule($acl1)
#Write the changes to the user folder
Set-ACL -path $homedirectory -AclObject $rule1
#ACL Systeme
$rule2 = Get-ACL -path $homedirectory
#Add this access rule to the ACL
$rule2.SetAccessRule($acl2)
#Write the changes to the user folder
Set-ACL -path $homedirectory -AclObject $rule2
#ACL Utilisateur final
$rule3 = Get-ACL -path $homedirectory
#Add this access rule to the ACL
$rule3.SetAccessRule($acl3)
#Write the changes to the user folder
Set-ACL -path $homedirectory -AclObject $rule3
#On casse l heritage mais on ne supprime pas les acls heritees
$acl = Get-ACL -Path $homedirectory
$acl.SetAccessRuleProtection($True, $False)
Set-Acl -Path $homedirectory -AclObject $acl
#On copie le login sur admanager pour gestion des ACLs plus fine
$destination = "\\admanager\monitor$\"
$pathdestination = $destination + $login
try
{
New-Item $pathdestination -ItemType file | Out-Null
Write-host "0"
}
Catch {
Write-Error "1"
}
}
else
{
Write-host "1"
}