[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/annu/ -> add_user.php (source)

   1  <?php
   2  
   3  
   4     /**
   5     
   6     * Ajoute des utilisateurs dans l'annuaire
   7     * @Version $Id: add_user.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 Modifie par Adrien CRESPIN -- Lycee Suzanne Valadon
  19     */
  20  
  21     /**
  22  
  23     * @Repertoire: annu
  24     * file: add_user.php
  25     */
  26  
  27     
  28  
  29  require "config.inc.php";
  30  require "functions.inc.php";
  31  
  32  // HTMLPurifier
  33  require_once  ("traitement_data.inc.php");
  34  
  35  $login=isauth();
  36  if ($login == "") header("Location:$urlauth");
  37  
  38  require  "ldap.inc.php";
  39  require  "ihm.inc.php";
  40  require "jlcipher.inc.php";
  41  
  42  require_once  ("lang.inc.php");
  43  bindtextdomain('se3-annu',"/var/www/se3/locale");
  44  textdomain ('se3-annu');
  45  
  46  
  47  header_crypto_html("Creation utilisateur","../");
  48  echo "<h1>".gettext("Annuaire")."</h1>\n";
  49  
  50  @session_start();
  51  $_SESSION["pageaide"]="Annuaire";
  52  aff_trailer ("7");
  53  
  54  if (!isset($_SESSION['comptes_crees'])) {
  55      $_SESSION['comptes_crees'] = array(array())  ;  // un sous-tableau par compte ; le deuxième tavbleau est, dans l'ordre nom, prenom, classe (?? en fait, non) (ou 'prof'), uid, password
  56      array_splice($_SESSION['comptes_crees'], 0, 1);
  57      }
  58  
  59  $nom=isset($_POST['nom']) ? $_POST['nom'] : (isset($_GET['nom']) ? $_GET['nom'] : "");
  60  $prenom=isset($_POST['prenom']) ? $_POST['prenom'] : (isset($_GET['prenom']) ? $_GET['prenom'] : "");
  61  $naissance=isset($_POST['naissance']) ? $_POST['naissance'] : (isset($_GET['naissance']) ? $_GET['naissance'] : "");
  62  $userpw=isset($_POST['userpw']) ? $_POST['userpw'] : "";
  63  $sexe=isset($_POST['sexe']) ? $_POST['sexe'] : (isset($_GET['sexe']) ? $_GET['sexe'] : "");
  64  $categorie=isset($_POST['categorie']) ? $_POST['categorie'] : "";
  65  $add_user=isset($_POST['add_user']) ? $_POST['add_user'] : "";
  66  $string_auth=isset($_POST['string_auth']) ? $_POST['string_auth'] : "";
  67  $string_auth1=isset($_POST['string_auth1']) ? $_POST['string_auth1'] : "";
  68  $dummy=isset($_POST['dummy']) ? $_POST['dummy'] : "";
  69  $dummy1=isset($_POST['dummy1']) ? $_POST['dummy1'] : "";
  70  
  71  
  72  if (is_admin("Annu_is_admin",$login)=="Y") {
  73         if ( $add_user && ($string_auth || $string_auth1) ) {
  74              exec ("/usr/bin/python ".$path_to_wwwse3."/includes/decode.py '$string_auth'",$Res);
  75              $naissance = $Res[0];
  76              exec ("/usr/bin/python ".$path_to_wwwse3."/includes/decode.py '$string_auth1'",$Res1);
  77              if(isset($Res1[0])) {$userpwd = $Res1[0];} else {$userpwd=false;}
  78          }
  79      // Ajout d'un utilisateur
  80      if (    (!isset($_POST['add_user']))
  81      || ( !$nom || !$prenom )    // absence de nom ou de prenom
  82          || ( $userpwd && !verifPwd($userpwd) ) // mot de passe invalide
  83      || ( $naissance && !verifDateNaissance($naissance) )  // date de naissance invalide
  84          || ( ($naissance && verifDateNaissance($naissance)) && ($userpwd && !verifPwd($userpwd)) )  // date de naissance mais password invalide
  85  //    || ($userpwd && !verifPwd($userpwd) )  // password invalide
  86         ) {
  87        ?>
  88        <form name = "auth" action="add_user.php" method="post" onSubmit = "encrypt(document.auth)">
  89          <table border="0">
  90            <tbody>
  91              <tr>
  92                <td><?php echo gettext("Nom :"); ?></td>
  93                <td colspan="2" valign="top"><input type="sn" name="nom" value="<?php echo $nom ?>" size="20"></td>
  94  
  95              </tr>
  96              <tr>
  97                <td><?php echo gettext("Pr&#233;nom :"); ?></td>
  98                <td colspan="2" valign="top"><input type="cn" name="prenom" value="<?php echo $prenom ?>" size="20"></td>
  99  
 100              </tr>
 101              <tr>
 102                <td><?php echo gettext("Date de naissance :"); ?></td>
 103                <td>
 104          <input type="texte" name="dummy" value="<?php echo $naissance ?>" size="8">
 105          <input type="hidden" name="string_auth" value="">
 106          </td>
 107                <td>
 108                  <font color="#FF9900">
 109                    &nbsp;<?php echo gettext("(YYYYMMDD) ce champ est optionnel."); ?>
 110                  </font>
 111                </td>
 112              </tr>
 113              <tr>
 114                <td><?php echo gettext("Mot de passe :"); ?></td>
 115                <td>
 116                      <input type= "password" value="" name="dummy1" size='8'  maxlength='8'>
 117                      <input type="hidden" name="string_auth1" value="">
 118                </td>
 119                <td>
 120                  <font color="#FF9900">
 121                    &nbsp;<?php echo gettext("ce champ est optionnel"); ?>
 122                  </font>
 123                </td>
 124              </tr>
 125              <tr>
 126                <td colspan="3" valign="top">
 127          <?php
 128              echo '<blockquote><font color="#FF9900">';    
 129              echo gettext('Si le champ mot de passe est laiss&#233; vide, un mot de passe sera cr&#233;&#233; selon la politique de mot de passe par d&#233;faut qui est d&#233;finie &#224; : ');
 130              switch ($pwdPolicy) {
 131                  case 0:        // date de naissance
 132                      echo gettext("date de naissance (YYYYMMDD)");
 133                      echo gettext("<br />Si ni la date de naissance ni le mot de passe ne sont renseign&#233;es, un mot de passe semi-al&#233;atoire sera g&#233;n&#233;r&#233;");
 134                      break;
 135                  case 1:        // semi-aleatoire
 136                      echo gettext("semi-al&#233;atoire (6 car.)");
 137                      break;
 138                  case 2:        // aleatoire
 139                      echo gettext("al&#233;atoire (8 car.)");
 140                          break;
 141              }
 142              echo '</font></blockquote>';    
 143      
 144          ?>
 145                </td>
 146              <tr>
 147                <td><?php echo gettext("Sexe :"); ?></td>
 148                <td colspan="2">
 149                  <img src="images/gender_girl.gif" alt="F&#233;minin" width="14" height="14" hspace="4" border="0">
 150                  <?php
 151                    echo "<input type=\"radio\" name=\"sexe\" value=\"F\"";
 152                    if (($sexe=="F")||(!$add_user)) echo " checked";
 153                    echo ">&nbsp;\n";
 154                  ?>
 155                  <img src="images/gender_boy.gif" alt="Masculin" width=14 height=14 hspace=4 border=0>
 156                  <?php
 157                    echo "<input type=\"radio\" name=\"sexe\" value=\"M\"";
 158                    if ($sexe=="M") echo " checked";
 159                    echo ">&nbsp;\n";
 160                  ?>
 161                </td>
 162              </tr>
 163              <tr>
 164                <td><?php echo gettext("Cat&#233;gorie"); ?></td>
 165                <td colspan="2" valign="top">
 166                  <select name="categorie">
 167                    <?php
 168                      echo "<option value=\"Eleves\"";
 169                      if ($categorie  == "Eleves" ) echo "SELECTED";
 170                      echo ">".gettext("El&#232;ves")."</option>\n";
 171                      echo "<option value=\"Profs\"";
 172                      if ($categorie  == "Profs" ) echo "SELECTED";
 173                      echo ">".gettext("Profs")."</option>\n";
 174                      echo "<option value=\"Administratifs\"";
 175                      if ($categorie  == "Administratifs" ) echo "SELECTED";
 176                      echo ">".gettext("Administratifs")."</option>\n";
 177                    ?>
 178                  </select>
 179                </td>
 180              </tr>
 181  
 182              <tr>
 183                <td><label for='checkbox_create_home'><?php echo gettext("Cr&#233;er le dossier personnel imm&#233;diatement"); ?></label></td>
 184                <td colspan="2" valign="top">
 185                  <input type='checkbox' id='checkbox_create_home' name='create_home' value='y' />
 186                </td>
 187              </tr>
 188  
 189              <tr>
 190                <td></td>
 191                <td></td>
 192            <td >
 193                  <input type="hidden" name="add_user" value="true">
 194                  <input type="submit" value="<?php echo gettext("Lancer la requ&#234;te"); ?>">
 195                </td>
 196              </tr>
 197            </tbody>
 198          </table>
 199        </form>
 200        <?php
 201          crypto_nav("../");
 202          if ($add_user) {
 203            if ( (!$nom)||(!$prenom)) {
 204              echo "<div class=error_msg>".gettext("Vous devez obligatoirement renseigner les champs : nom, pr&#233;nom !")."</div><br>\n";
 205            } elseif ( !$naissance && !$userpwd ) {
 206                  echo "<div class='error_msg'>";
 207                   echo gettext("Vous devez obligatoirement renseigner un des deux champs �mot de passe� ou �date de naissance�.");
 208                   echo "</div><BR>\n";
 209            } else {
 210                  if ( ($userpwd) && !verifPwd($userpwd) ){
 211                        echo "<div class='error_msg'>";
 212                          echo gettext("Vous devez proposer un mot de passe d'une longueur comprise entre 4 et 8 caract&#232;res
 213                      alphanum&#233;riques avec obligatoirement un des caract&#232;res sp&#233;ciaux suivants")."&nbsp;".$char_spec."&nbsp;".gettext("ou &#224; d&#233;faut laisser le champ mot de passe vide et dans ce cas un mot de passe sera cr&#233;&#233;.")."
 214                    </div><BR>\n";
 215              }
 216              if ( ($naissance) && !verifDateNaissance($naissance) ){
 217                    echo "<div class='error_msg'>";
 218                  echo gettext("Le champ date de naissance doit &#234;tre obligatoirement au format Ann&#233;eMoisJour (YYYYMMDD).");
 219                  echo "</div><BR>\n";
 220              }
 221            }
 222          }
 223  
 224      } else {
 225            // Verification si ce nouvel utilisateur n'existe pas deja
 226            $prenom = stripslashes($prenom); $nom = stripslashes($nom);
 227            // suppression des apostrophes - tant pis pour la noblesse
 228      $prenom = str_replace("'", "", $prenom);
 229      $nom = str_replace("'", "", $nom);
 230      
 231            $cn =utf8_encode($prenom." ".$nom);
 232            $people_exist=search_people("(cn=$cn)");
 233  
 234            if (count($people_exist)) {
 235              echo "<div class='error_msg'>";
 236                  echo gettext("Echec de cr&#233;ation : L'utilisateur")." <font color=\"black\"> $prenom $nom</font>".gettext(" est d&#233;ja pr&#233;sent dans l'annuaire.");
 237                    echo "</div><BR>\n";
 238            } else {
 239          switch ($pwdPolicy) {
 240              case 0:        // date de naissance
 241                         if ((!$naissance) && (!$userpwd) ) {
 242                      exec("/usr/share/se3/sbin/gen_pwd.sh -s", $out);
 243                      $userpwd=$out[0];
 244                      $naissance="00000000";
 245                  } else {
 246                      if (!$userpwd) $userpwd=$naissance;
 247                  } 
 248                  break;
 249              case 1:        // semi-aleatoire
 250                  if (!$naissance ) $naissance="00000000";
 251                  if (!$userpwd) {
 252                      exec("/usr/share/se3/sbin/gen_pwd.sh -s", $out);
 253                      $userpwd=$out[0];
 254                  }
 255                  break;
 256              case 2:        // aleatoire
 257                  if (!$naissance ) $naissance="00000000";
 258                  if (!$userpwd) {
 259                      exec("/usr/share/se3/sbin/gen_pwd.sh -a", $out);
 260                      $userpwd=$out[0];
 261                  }
 262                  break;
 263              }
 264              
 265                  // Creation du nouvel utilisateur
 266                  //echo "<pre>/usr/share/se3/sbin/userAdd.pl \"$prenom\" \"$nom\" \"$userpwd\" \"$naissance\" \"$sexe\" \"$categorie\"</pre>";
 267                  exec ("/usr/share/se3/sbin/userAdd.pl \"$prenom\" \"$nom\" \"$userpwd\" \"$naissance\" \"$sexe\" \"$categorie\"",$AllOutPut,$ReturnValue);
 268                  // Compte rendu de creation
 269                  if ($ReturnValue == "0") {
 270                      if($sexe=="M"){
 271                          echo gettext("L'utilisateur ")." $prenom $nom ".gettext(" a &#233;t&#233; cr&#233;&#233; avec succ&#232;s.")."<BR>";
 272                      } else {
 273                          echo gettext("L'utilisateur ")." $prenom $nom ".gettext(" a &#233;t&#233; cr&#233;&#233;e avec succ&#232;s.")."<BR>";
 274                      }
 275                      $users = search_people ("(cn=$cn)");
 276                      if ( count ($users) ) {
 277                          echo gettext("Son identifiant est ")."<STRONG><a href='people.php?uid=".$users[0]["uid"]."' title=\"Modifier le compte.\">".$users[0]["uid"]."</a></STRONG><BR>\n";
 278                          echo gettext("Son mot de passe est ")."<STRONG>".$userpwd."</STRONG><BR>\n";
 279                          $nouveau = array('nom'=>"$nom", 'pre'=>"$prenom", 'uid'=>$users[0]["uid"], 'pwd'=>"$userpwd");
 280                          $_SESSION['comptes_crees'][]=$nouveau;
 281                          echo "<LI><A HREF=\"add_user_group.php?uid=".$users[0]["uid"]."\">".gettext("Ajouter &#224; des groupes...")."</A>\n";
 282                      }
 283      
 284                      if((isset($_POST['create_home']))&&($_POST['create_home']=='y')) {
 285                          echo "<p><b>Cr&#233;ation du dossier personnel de ".$users[0]["uid"]."</b><br />";
 286                          exec("sudo /usr/share/se3/shares/shares.avail/mkhome.sh ".$users[0]["uid"],$ReturnValue2);
 287                          echo "<pre style='color:red'>";
 288                          foreach($ReturnValue2 as $key => $value) {
 289                              echo "$value";
 290                          }
 291                          echo "</pre>\n";
 292                      }
 293  
 294              } else {
 295                    echo "<div class='error_msg'>".gettext("Erreur lors de la cr&#233;ation du nouvel utilisateur")." $prenom $nom
 296                        <font color='black'>(".gettext("type d'erreur :")." $ReturnValue)
 297                        </font>,".gettext(" veuillez contacter")."
 298                        <a href='mailto:$MelAdminLCS?subject=PB creation nouvel utilisateur Se3'>".gettext("l'administrateur du syst&#232;me")."</a></div><br />\n";
 299                  echo "<p><br /></p>\n";
 300                  echo "<p><em>NOTES&nbsp;:</em> A propos des erreurs, une erreur 255 peut appara&icirc;tre quand on tente d'ajouter un utilisateur toto (<em>qui n'existait pas dans la branche People</em>), alors qu'un toto existait dans un groupe (<em>Eleves, Profs ou Administratifs</em>).</p>\n";
 301              }
 302        }
 303      }
 304      
 305  include("listing.inc.php");
 306  
 307  } else {
 308      echo "<div class=error_msg>".gettext("Cette application, n&#233;cessite les droits d'administrateur du serveur SambaEdu !")."</div>";
 309  }
 310  
 311  include ("pdp.inc.php");
 312  ?>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1