1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
| <html>
<head>
<script type="text/javascript">
function remplir()
{
document.getElementById('dn').value = ((document.getElementById('prenom').value).substr(0,1)).toLowerCase() +"." +(document.getElementById('username').value).toLowerCase();
}
function activer() {
document.getElementById('dn').removeAttribute('readonly');
document.getElementById('nonmodification').checked=false;
}
function desactiver()
{
document.getElementById('dn').setAttribute('readonly','readonly');
document.getElementById('modification').checked=false;
}
</script>
<title>Page Accueil</title></head>
<body>
<h1>Bienvenue sur notre page d'ajout des utilisateurs</h1>
<br>
<meta http-equiv="Content/Type" content="text/html; charset=iso-8859-1">
<form action="" method="POST" >
<fieldset>
<legend>Formulaire de saisie</legend>
Nom : <input id='username' type="text" name="username" placeholder="DURAND" onchange="remplir()"><br><br>
Prenom : <input id='prenom' type="text" name="prenom" placeholder="Jean" onchange="remplir()"><br><br>
Mail : <input type="text" name="mail" placeholder="jean.durand@mail.fr"><br><br>
Civilite :
<input type="radio" name="civ" value="M." /> M.
<input type="radio" name="civ" value="Mme."/> Mme.
<input type="radio" name="civ" value="Mlle."/> Mlle.
<br>N'oubliez pas de cocher votre civilite! <br>
<br>
Mot de passe : <input type="password" name="mdp" placeholder="********"><br>
Retapez votre mot de passe : <input type="password" name="mdp2" placeholder="********"><br>
Le format du mot de passe est de 6 caracteres minimum avec une lettre et un chiffre dedans.
<br><br>
Fonction : <input type="text" name="fonction"><br>
<br>Modifier l'identifiant de connexion ?<br>
<input id="oui" type="radio" name="modification" value="oui" onclick="activer()"/>Oui
<input id="non" type="radio" name="nonmodification" value="non" onclick="desactiver()"/>Non<br>
Login : <input readonly='true' id="dn" type="text" name="dn" style="width:360px"/><br>
Identifiant de connexion par defaut, il sera modifier si il est deja utiliser dans la base de donnee. Il vous sera transmis lors de l'ajout.<br>
<input id="button" type="submit" value="Valider">
<br>
</fieldset>
<fieldset>
<legend>Upload</legend>
Fichier : <input type="file" name='upload' id='upload'/>
</fieldset>
</form>
<?php
//options
$godir = "../********";
$goconfig="/etc/groupoffice/*************/config.php";
//import GroupOffice config
include_once $goconfig;
function replace_accents($str, $charset='utf-8')
{
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ'
$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractÃÂÃ
¡res
return $str;
}
$mailRegex='#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#'; // Pour le test de la validiter du mail
$mdpRegex ='#^(?=.*[A-Za-z])(?=.*[0-9])(\w{6,})$#'; // Pour le test de la validiter du mot de passe
// Si le tableau $_POST existe alors le formulaire a etait envoyer
if(!empty($_POST))
{
// Le login est-il rempli ?
if(empty($_POST['username']))
{
$message = 'Veuillez indiquer votre username svp !';
}
// Le prenom est-il rempli ?
elseif(empty($_POST['prenom']))
{
$message = 'Veuillez indiquer votre prenom svp !';
}
// Le mail est-il rempli ?
elseif (empty($_POST['mail']))
{
$message = 'Veuillez entre une adresse mail ( Exemple : test@operateur.fr)';
}
// Le mot de passe est-il rempli ?
elseif(empty($_POST['civ']))
{
$message = 'Veuillez indiquer votre civilite svp !';
}
// Le mot de passe est-il rempli ?
elseif(empty($_POST['mdp']))
{
$message = 'Veuillez indiquer votre mot de passe svp !';
}
elseif ($_POST['mdp'] != $_POST['mdp2'])
{
$message = 'Les deux mot de passe ne sont pas identique.';
}
//le mail est-il valide ou le mot de passe est valide ?
elseif (!empty($_POST['mail']) or !empty($_POST['mdp']))
{
if(!preg_match($mailRegex, $_POST['mail']))
{
$message = 'Veuillez mettre votre adresse mail au format valide (Exemple : test@operateur.fr).';
}
if(!preg_match($mdpRegex, $_POST['mdp']))
{
$message = 'Veuillez mettre un mot de passe valide (Exemple : testmdp17).';
}
}
if(!empty($message))
echo $message;
else
{
$sn =STRTOUPPER( htmlspecialchars($_POST['username'])); // recupere en format majuscule le nom
$givenName =UCWORDS( htmlspecialchars($_POST['prenom'])); // recupere avec une majuscule au debut le prenom
$passgedeon='{MD5}' . base64_encode(pack('H*', md5(htmlspecialchars($_POST['mdp']))));
$mail = htmlspecialchars($_POST["mail"]);
$title= htmlspecialchars($_POST["civ"]);
$debutCn = SUBSTR(STRTOLOWER(replace_accents((htmlspecialchars($_POST['prenom'])))),0,1); // construit le debut du cn
$finCn = STRTOLOWER(replace_accents(htmlspecialchars($_POST['username']))); //construit la fin du cn
$cn = $debutCn.".".$finCn; // creer le cn sous le bon format
$uid = $givenName." ".$sn; // creer le uid sous le bon format
//Connexion au LDAP
$ds = ldap_connect($config["ldap_host"],$config["ldap_port"]);
if($ds)
{
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION, 3);
//Authentification au LDAP
$r=ldap_bind($ds,$config["ldap_user"],$config["ldap_pass"]);
if($r)
{
// recupere le uidnumber libre
$sr = ldap_search ($ds,$config["ldap_peopledn"], "objectClass=inetOrgPerson");
$infoRecherche = ldap_get_entries ($ds, $sr);
$tableauUid =array();
$tableauCn =array();
for ($i=0; $i < $infoRecherche ["count"]; $i++)
{
array_push($tableauUid, $infoRecherche[$i]["uidnumber"][0]);
array_push($tableauCn, $infoRecherche[$i]["cn"][0]);
}
$leIndex=1;
while((in_array($leIndex,$tableauUid))==TRUE)
$leIndex++;
// creer le tableau qui va contenir les informations du nouveau membre
$uidnumber=$leIndex;
$initiales= STRTOUPPER(SUBSTR($givenName,0,1) . SUBSTR($sn,0,1));
if(!empty($_POST['fonction']))
{
$fonction=replace_accents((htmlspecialchars($_POST['prenom'])));
$info["employeeType"]=$fonction;
}
$info["givenName"]=$givenName;
$info["mail"]=$mail;
$info["objectClass"][0]="inetOrgPerson";
$info["objectClass"][1]="top";
$info["objectClass"][2]="groupOfficePerson";
$info["sn"]=$sn;
$info["title"]=$title;
$info["uid"]=$uid;
$info["uidnumber"] = $uidnumber;
$info["userpassword"]=$passgedeon;
$info["initials"]=$initiales;
if($cn == (replace_accents(htmlspecialchars($_POST["dn"]))))
{
for ($i =1 ; $i < strlen($cn) ;$i++)
if((in_array($cn, $tableauCn))== TRUE)
{
$cn=SUBSTR(STRTOLOWER(replace_accents((htmlspecialchars($_POST['prenom'])))),0,$i) .".".$finCn;
}
}
else{
$cn = replace_accents(htmlspecialchars($_POST["dn"]));
}
if((in_array($cn,$tableauCn))==TRUE)
{
echo " utilisateur deja present";
}
else
{
$dn="cn=".$cn.",".$config["ldap_peopledn"];
$info["cn"]=$cn;
// ajout le membre avec ses information
$addUser=ldap_add($ds,$dn,$info);
if($addUser)
echo "L'utilisateur " .$info["cn"] ." a etait ajoute.";
}
}
}
//Close the LDAP connection
ldap_close($ds);
}
}
?>
</body></html> |
Partager