[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 4 /** 5 6 * Modifie l'entree d'un utilisateur 7 * @Version $Id: mod_user_entry.php 8600 2015-03-16 20:12:30Z plouf $ 8 9 * @Projet LCS / SambaEdu 10 11 * @auteurs jLCF jean-luc.chretien@tice.ac-caen.fr 12 * @auteurs oluve olivier.le_monnier@crdp.ac-caen.fr 13 * @auteurs wawa olivier.lecluse@crdp.ac-caen.fr 14 * @auteurs Equipe Tice academie de Caen 15 16 * @Licence Distribue selon les termes de la licence GPL 17 18 * @note 19 */ 20 21 /** 22 23 * @Repertoire: annu 24 * file: mod_user_entry.php 25 */ 26 27 28 29 30 31 require "config.inc.php"; 32 require "functions.inc.php"; 33 34 35 // require "entete.inc.php"; 36 require "ldap.inc.php"; 37 require "ihm.inc.php"; 38 require "jlcipher.inc.php"; 39 40 require "crob_ldap_functions.php"; 41 42 // HTMLPurifier 43 require_once ("traitement_data.inc.php"); 44 45 $login=isauth(); 46 // if ($login != "") { 47 48 require_once ("lang.inc.php"); 49 bindtextdomain('se3-annu',"/var/www/se3/locale"); 50 textdomain ('se3-annu'); 51 52 header_crypto_html(gettext("Modification parametres utilisateur"),"../"); 53 54 // Aide 55 @session_start(); 56 $_SESSION["pageaide"]="Annuaire#Modifier_mon_compte"; 57 58 echo "<h1>".gettext("Annuaire")."</h1>\n"; 59 60 61 aff_trailer ("4"); 62 63 $isadmin=is_admin("Annu_is_admin",$login); 64 65 $uid=isset($_GET['uid']) ? $_GET['uid'] : (isset($_POST['uid']) ? $_POST['uid'] : NULL); 66 67 if(!isset($uid)) { 68 echo "<p style='color:red'>Erreur : Aucun utilisateur n'a été choisi.</p>\n", 69 include ("pdp.inc.php"); 70 die(); 71 } 72 73 //debug_var(); 74 75 $user_entry=isset($_POST['user_entry']) ? $_POST['user_entry'] : ''; 76 $telephone=isset($_POST['telephone']) ? $_POST['telephone'] : ''; 77 $nom=isset($_POST['nom']) ? $_POST['nom'] : ''; 78 $prenom=isset($_POST['prenom']) ? $_POST['prenom'] : ''; 79 $description=isset($_POST['description']) ? $_POST['description'] : ''; 80 $userpwd=isset($_POST['userpwd']) ? $_POST['userpwd'] : ''; 81 $mail=isset($_POST['mail']) ? $_POST['mail'] : ''; 82 $shell=isset($_POST['shell']) ? $_POST['shell'] : ''; 83 $password=isset($_POST['password']) ? $_POST['password'] : ''; 84 $string_auth=isset($_POST['string_auth']) ? $_POST['string_auth'] : ''; 85 86 $naissance=isset($_POST['naissance']) ? $_POST['naissance'] : ''; 87 $employeeNumber=isset($_POST['employeeNumber']) ? $_POST['employeeNumber'] : ''; 88 89 if (($isadmin=="Y") or ((tstclass($login,$uid)==1) and (ldap_get_right("sovajon_is_admin",$login)=="Y"))) { 90 // Recuperation des entrees de l'utilisateur a modifier 91 $user=people_get_variables ($uid, false); 92 93 // decodage du mot de passe 94 if ((isset($user_entry))&&($user_entry)&&($string_auth!='')) { 95 // decryptage des mdp 96 exec ("/usr/bin/python ".$path_to_wwwse3."/includes/decode.py '$string_auth'",$Res); 97 $userpwd = $Res[0]; 98 } 99 // Modification des entrees 100 //if (!isset($user_entry) || !verifTel($telephone) || !verifEntree($nom) || !verifEntree($prenom) || !verifDescription($description) || ($userpwd && !verifPwd($userpwd)) ) { 101 /* 102 if (!verifTel($telephone)) { 103 echo "ERREUR tel<br />"; 104 } 105 if (!verifEntree($nom)) { 106 echo "ERREUR nom<br />"; 107 } 108 if (!verifEntree($prenom)) { 109 echo "ERREUR prenom<br />"; 110 } 111 if (!verifDescription($description)) { 112 echo "ERREUR description<br />"; 113 } 114 if (!verifDateNaissance($naissance)) { 115 echo "ERREUR naissance<br />"; 116 } 117 if (!verifPwd($userpwd)) { 118 echo "ERREUR pwd<br />"; 119 } 120 */ 121 122 $info_employeeNumber=""; 123 if($employeeNumber!='') { 124 $tmp_tab=verif_employeeNumber($employeeNumber); 125 if(($tmp_tab)&&(count($tmp_tab)>0)) { 126 if($tmp_tab[0]!=$uid) { 127 $info_employeeNumber="Le numéro <b>$employeeNumber</b> est déjá attribué á <a href='".$_SERVER['PHP_SELF']."?uid=".$tmp_tab[0]."'>".$tmp_tab[0]."</a> dans la branche <b>".$tmp_tab[-1]."</b><br />"; 128 } 129 } 130 } 131 132 $employeeNumber0=$employeeNumber; 133 $employeeNumber=preg_replace("/[^0-9A-Za-z]/","",$employeeNumber); 134 135 if($employeeNumber!=$employeeNumber0) { 136 $info_employeeNumber.="Un ou des caractères non valides ont été saisis dans le numéro '<b>$employeeNumber0</b>'"; 137 } 138 139 if (!isset($user_entry) || !verifTel($telephone) || !verifEntree($nom) || !verifEntree($prenom) || !verifDescription($description) || ($userpwd && !verifPwd($userpwd)) || (($naissance!='')&&(!verifDateNaissance($naissance))) || ($info_employeeNumber!="")) { 140 // Quand la migration givenName<-Prenom et seeAlso<-pseudo sera effectuee, on pourra modifier ci-dessous: 141 $user[0]["prenom"]=getprenom($user[0]["fullname"],$user[0]["nom"]); 142 ?> 143 <form name = "auth" action="mod_user_entry.php" method="post" onSubmit = "encrypt(document.auth)"> 144 <table align="center" border="0" width="90%"> 145 <tbody> 146 <tr> 147 <td width="27%">Login : </td> 148 <td width="73%" colspan="2"><tt><strong><?php echo $user[0]["uid"]?></strong></tt></td> 149 </tr> 150 <tr> 151 <td width="27%"><?php echo gettext("Prénom"); ?> : </td> 152 <td width="73%" colspan="2"><input type="text" name="prenom" value="<?php echo $user[0]["prenom"]?>" size="20"></td> 153 </tr> 154 <tr> 155 <td><?php echo gettext("Nom"); ?> : </td> 156 <td colspan="2"><input type="text" name="nom" value="<?php echo $user[0]["nom"]?>" size="20"></td> 157 </tr> 158 159 <?php 160 if ($isadmin=="Y") { 161 162 $tmp_tab=explode(",", $user[0]["gecos"]); 163 if(isset($tmp_tab[1])) {$naissance=$tmp_tab[1];} else {$naissance="";} 164 165 if(isset($user[0]["employeeNumber"])) {$employeeNumber=$user[0]["employeeNumber"];} 166 ?> 167 168 <tr> 169 <td><?php echo gettext("Date de naissance"); ?> : </td> 170 <td colspan="2"><input type="text" name="naissance" value="<?php echo $naissance?>" size="20"></td> 171 </tr> 172 173 <tr> 174 <td valign='top'><?php echo gettext("Numero"); ?> : </td> 175 <td valign='top'><input type="text" name="employeeNumber" value="<?php echo $employeeNumber?>" size="20"></td> 176 <td> 177 <font color="orange"> 178 <u><?php echo gettext("Attention"); ?></u> :<?php echo gettext(" Le numéro correspond á l'attribut 'employeeNumber' dans l'annuaire LDAP.<br />C'est ce numéro qui est utilisé lors d'un import des comptes pour déterminer si le compte existe déjá ou non.<br />Ne le changez pas sans bonne raison."); ?> 179 </font> 180 </td> 181 </tr> 182 183 <tr> 184 <td><?php echo gettext("Adresse mèl"); ?> : </td> 185 <td colspan="2"><input type="text" name="mail" value="<?php echo $user[0]["email"]?>" size="20"></td> 186 </tr> 187 188 <tr> 189 <td><em>Shell </em> : </td> 190 <td> 191 <select name="shell"> 192 <option <?php if ($user[0]["shell"] == "/bin/bash") echo "selected" ?>>/bin/bash</option> 193 <option <?php if ($user[0]["shell"] == "/bin/true") echo "selected" ?>>/bin/true</option> 194 </select> 195 </td> 196 <td> 197 <font color="orange"> 198 <u><?php echo gettext("Attention"); ?></u> :<?php echo gettext(" Si vous choisissez /bin/bash, cet utilisateur disposera d'un shell sur le serveur."); ?> 199 </font> 200 </td> 201 </tr> 202 <tr> 203 <td valign="center"><?php echo gettext("Profil"); ?> : </td> 204 <td valign="bottom" colspan="2"><textarea name="description" rows="2" cols="40"><?php echo $user[0]["description"]; ?></textarea></td> 205 </tr> 206 <tr> 207 <td><?php echo gettext("Téléphone"); ?> : </td> 208 <td colspan="2"><input type="text" name="telephone" value="<?php echo $user[0]["tel"] ?>" size="10"></td> 209 </tr> 210 <?php } ?> 211 <tr> 212 <td><?php echo gettext("Mot de passe"); ?>: </td> 213 <td> 214 <input type= "password" value="" name="dummy" size='20' maxlength='20'> 215 <input type="hidden" name="string_auth" value=""> 216 </td> 217 <td> 218 <font color="orange"> 219 <u><?php echo gettext("Attention"); ?></u> : <?php echo gettext("Si vous laissez ce champ vide, c'est l'ancien mot de passe qui sera conservé."); ?> 220 </font> 221 </td> 222 </tr> 223 <tr> 224 <td></td> 225 <td align="left"> 226 <input type="hidden" name="uid" value="<?php echo $uid ?>"> 227 <input type="hidden" name="user_entry" value="true"> 228 <input type="submit" value="<?php echo gettext("Lancer la requête"); ?>"> 229 </td> 230 </tr> 231 </tbody> 232 </table> 233 </form> 234 <?php 235 crypto_nav("../"); 236 if ((isset($user_entry))&&($user_entry)) { 237 // verification des saisies 238 // nom prenom 239 if ( !verifEntree($nom) || !verifEntree($prenom) ) { 240 echo "<div class=\"error_msg\">".gettext("Les champs nom et prenom, doivent comporter au minimum 3 caractères alphabétiques.")."</div><br />\n"; 241 } 242 // profil 243 if ( $description && !verifDescription($description) ) { 244 echo "<div class=\"error_msg\">".gettext("Veuillez reformuler le champ description.")."</div><br />\n"; 245 } 246 // tel 247 if ( $telephone && !verifTel($telephone) ) { 248 echo "<div class=\"error_msg\">".gettext("Le numéro de téléphone que vous avez saisi, n'est pas conforme.")."</div><br />\n"; 249 } 250 251 // Date de naissance 252 if ($naissance!='' && !verifDateNaissance($naissance)) { 253 echo "<div class=\"error_msg\">".gettext("La date de naissance que vous avez saisie, n'est pas conforme.")."</div><br />\n"; 254 } 255 256 // mot de passe 257 if ( $userpwd && !verifPwd($userpwd) ) { 258 echo "<div class='error_msg'>"; 259 echo gettext("Vous devez proposer un mot de passe d'une longueur comprise entre 4 et 8 caractères 260 alphanumériques avec obligatoirement un des caractères spéciaux suivants"); 261 echo " ($char_spec) </div><br />\n"; 262 } 263 264 if($info_employeeNumber!="") { 265 echo "<div class=\"error_msg\">".gettext("$info_employeeNumber.")."</div><br />\n"; 266 } 267 268 // fin verification des saisies 269 } 270 271 echo "<p><a href='people.php?uid=".$uid."'>Retour sans modification vers la fiche de $uid</a></p>\n"; 272 273 } else { 274 // Positionnement des entrees a modifier 275 //$entry["sn"] = stripslashes ( utf8_encode($nom) ); 276 //$entry["cn"] = stripslashes ( utf8_encode($prenom)." ".utf8_encode($nom) ); 277 $entry["sn"] = stripslashes ( ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$nom")))),"'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","_AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz"))) ); 278 $entry["cn"] = stripslashes ( ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$prenom")))),"'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","_AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz")))." ".ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$nom")))),"'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","_AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz"))) ); 279 280 //====================================== 281 // Correction du gecos: 282 //echo "\$user[0][\"gecos\"]=".$user[0]["gecos"]."<br />"; 283 if($user[0]["gecos"]!="") { 284 $tab_gecos=explode(",",$user[0]["gecos"]); 285 //$entry["gecos"]=ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$prenom"))))," 'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","__AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz")))." ".ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$nom"))))," 'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","__AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz"))).",".$tab_gecos[1].",".$tab_gecos[2].",".$tab_gecos[3]; 286 $entry["gecos"]=ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$prenom")))),"'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","_AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz")))." ".ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$nom")))),"'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","_AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz"))).",".$tab_gecos[1].",".$tab_gecos[2].",".$tab_gecos[3]; 287 } 288 289 if($corriger_givenname_si_diff=="y") { 290 // Ajout: crob 20080611 291 // Variable initialisée dans includes/ldap.inc.php: $corriger_givenname_si_diff 292 // placée pour permettre de désactiver temporairement cette partie 293 294 // Le givenName est destiné à prendre pour valeur le Prenom de l'utilisateur 295 //$entry["givenName"] = ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$prenom"))))," 'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","__AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz"))); 296 $entry["givenName"] = ucfirst(strtolower(strtr(preg_replace("/Æ/","AE",preg_replace("/æ/","ae",preg_replace("/¼/","OE",preg_replace("/½/","oe","$prenom")))),"'ÂÄÀÁÃÄÅÇÊËÈÉÎÏÌÍÑÔÖÒÓÕ¦ÛÜÙÚݾ´áàâäãåçéèêëîïìíñôöðòóõ¨ûüùúýÿ¸","_AAAAAAACEEEEIIIINOOOOOSUUUUYYZaaaaaaceeeeiiiinoooooosuuuuyyz"))); 297 } 298 299 // Il faudrait aussi corriger le gecos et pour cela récupérer le sexe et la date de naissance 300 // On ne les trouve que dans le gecos ici. 301 // Et le gecos n'est pas récupéré avec $user=people_get_variables ($uid, false); 302 // Et on récupère un $user[0][pseudo] <- givenName 303 /* 304 echo "<p>Valeur des attributs avant modification: <br />"; 305 foreach($user[0] as $key => $value) { 306 echo "\$user[0][$key]=$value<br />"; 307 } 308 */ 309 // La fonction people_get_variables() est utilisée dans pas mal de pages modifier le retour si givenName prend pour valeur Prenom va être lourd. 310 //====================================== 311 312 if ( $isadmin=="Y" ) { 313 $entry["loginshell"] = $shell; 314 // Modification du homeDirectory 315 if ( $shell == "/usr/lib/sftp-server" ) 316 $entry["homedirectory"] = "/home/".$user[0]["uid"]."/./"; 317 else $entry["homedirectory"] = "/home/".$user[0]["uid"]; 318 if ( $mail != "" ) $entry["mail"] = $mail; 319 if ( $telephone && verifTel($telephone) ) $entry["telephonenumber"]=$telephone ; 320 if ( $description && verifDescription($description) ) $entry["description"]=utf8_encode(stripslashes($description)); 321 322 if ($naissance!='' && verifDateNaissance($naissance)) { 323 if(isset($entry["gecos"])) { 324 $tmp_tab=explode(",", $entry["gecos"]); 325 if(isset($tmp_tab[3])) { 326 $entry["gecos"]=$tmp_tab[0].",".$naissance.",".$tmp_tab[2].",".$tmp_tab[3]; 327 } 328 else { 329 echo "<div class=\"error_msg\">".gettext("L'attribut gecos n'est pas correctement renseigné.")."</div><br />\n"; 330 } 331 } 332 } 333 334 if($employeeNumber!="") {$entry["employeeNumber"] = $employeeNumber;} 335 } 336 // Modification des entrees 337 $ds = @ldap_connect ( $ldap_server, $ldap_port ); 338 if ( $ds ) { 339 $r = @ldap_bind ( $ds, $adminDn, $adminPw ); // Bind en admin 340 if ($r) { 341 if (@ldap_modify ($ds, "uid=".$uid.",".$dn["people"],$entry)) { 342 echo "<strong>".gettext("Les entrées ont été modifiées avec succès.")."</strong><br />\n"; 343 } else { 344 echo "<strong>".gettext("Echec de la modification, veuillez contacter")." </strong><A HREF='mailto:$MelAdminLCS?subject=PB modification entrees utilisateur'>".gettext("l'administrateur du système")."</A><br />\n"; 345 } 346 } 347 @ldap_close ( $ds ); 348 349 if((isset($user[0]["employeeNumber"]))&&($user[0]["employeeNumber"]!="")&&($employeeNumber=='')) { 350 // Il faut vider l'employeeNumber 351 $tab_attr=array(); 352 $tab_attr["employeeNumber"]=$user[0]["employeeNumber"]; 353 if(modify_attribut ("uid=".$uid, "people", $tab_attr, "del")) { 354 echo "<strong>".gettext("L'employeeNumber a été correctement vidé.")."</strong><br />\n"; 355 } 356 else { 357 echo "<strong>".gettext("Echec de la modification de l'employeeNumber, veuillez contacter")." </strong><A HREF='mailto:$MelAdminLCS?subject=PB modification entrees utilisateur'>".gettext("l'administrateur du système")."</A><br />\n"; 358 } 359 } 360 361 } else { 362 echo gettext("Erreur de connection à l'annuaire, veuillez contacter")." </strong><A HREF='mailto:$MelAdminLCS?subject=PB connection a l'annuaire'>".gettext("l'administrateur du système</A>administrateur")."<br />\n"; 363 } 364 365 // Fin modification des entrees 366 // Changement du mot de passe 367 if ( $userpwd && verifPwd($userpwd) ) { 368 userChangedPwd($uid, $userpwd); 369 } 370 371 echo "<p><a href='".$_SERVER['PHP_SELF']."?uid=".$uid."'>Retour vers la modification des informations $uid</a></p>\n"; 372 echo "<p><a href='people.php?uid=".$uid."'>Retour vers la fiche de $uid</a></p>\n"; 373 } 374 } else { 375 echo "<div class=error_msg>".gettext("Cette fonctionnalité nécessite des droits d'administration SambaEdu !")."</div>"; 376 } 377 378 379 380 include ("pdp.inc.php"); 381 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |