one more
authorx2000habouzit <x2000habouzit>
Sat, 17 Jul 2004 15:03:11 +0000 (15:03 +0000)
committerx2000habouzit <x2000habouzit>
Sat, 17 Jul 2004 15:03:11 +0000 (15:03 +0000)
+--------+--------+--------+--------+
|  todo  |  post  |  done  |  tot.  |
+--------+--------+--------+--------+
|    30  |    32  |   112  |   174  |
|   17%  |   18%  |   65%  |  100%  |
+--------+--------+--------+--------+

etat_migration
htdocs/recovery.php [new file with mode: 0644]
templates/profil/naissance.tpl
templates/recovery.tpl [new file with mode: 0644]

index d652910..05ac7f6 100644 (file)
@@ -33,7 +33,6 @@ Etat  | Ancien nom                                                              | Nouveau nom
 ------+-[ inscription + mdp ]---------------------+----------------
 ;        | inscrire.php                                                          | 
 ;        | maj.php                                                                       | 
-;        | recovery.php                                                          | 
 ;        | step4.php                                                             | 
 ;        | tmpPWD.php                                                            | 
 ------+-[ bordel ]--------------------------------+----------------
@@ -175,6 +174,7 @@ xx    | paiement/index.php                                            | -
 xx       | pattecassee.php                                                       | -
 xx       | preferences.php                                                       | -
 xx       | profil.php                                                            | TODO : reste 2-3 trucs comme popWin() a changer
+xx       | recovery.php                                                          | 
 xx!      | redirect/error.php                                            | -
 xx!      | redirect/redirect.php                                         | -
 xx       | referent.php                                                          | TODO : utilise la css de recherche qui n'est pas encore migré
diff --git a/htdocs/recovery.php b/htdocs/recovery.php
new file mode 100644 (file)
index 0000000..b2e707d
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page('recovery.tpl', AUTH_PUBLIC);
+
+$errors = Array();
+
+if (isset($_REQUEST['login']) and isset($_REQUEST['birth']))  {
+    if (!ereg("[0-3][0-9][0-1][0-9][1][9]([0-9]{2})", $_REQUEST['birth'])) {
+        $page->assign('error', "Date de naissance incorrecte ou incohérente");
+        $page->run();
+    }
+
+    $mailorg=strtok($_REQUEST['login'],"@");
+
+    // paragraphe rajouté : si la date de naissance dans la base n'existe pas, on l'update
+    // avec celle fournie ici en espérant que c'est la bonne
+
+    $sql="SELECT user_id, naissance FROM auth_user_md5 WHERE username='$mailorg'";
+    $result=$globals->db->query($sql);
+    if (list($uid,$naissance)=mysql_fetch_array($result)) {
+        if((strlen($naissance))<5) {
+            $globals->db->query("UPDATE auth_user_md5 SET naissance={$_REQUEST['birth']} WHERE user_id=$uid");
+            $naissance = $_REQUEST['birth'];
+        }
+    }
+    mysql_free_result($result);
+
+    if ($naissance == $_REQUEST['birth']) {
+        $page->assign('ok', true);
+        $url=rand_url_id();
+        $stamp=date("Y-m-d H:i:s");
+        $sql="INSERT INTO perte_pass (certificat,uid,created) VALUES ('$url',$uid,'$stamp')";
+
+        $globals->db->query($sql);
+
+        // on recupere les emails sans tenir comptes du flags active (ni des autres)
+        // sauf qu'il ne faut pas prendre la ligne qui possède l'éventuel appel 
+        // au filtre personnel (ligne dont le num = 0)
+        $result=$globals->db->query("select email from emails where uid = $uid and num != 0");
+        
+        $emails = array();
+        while(list($email) = mysql_fetch_row($result)) {
+            $emails[] = $email;
+        }
+        mysql_free_result($result);
+        $emails = implode(',', $emails);
+
+        require("diogenes.mailer.inc.php");
+        $mymail = new DiogenesMailer('Gestion des mots de passe <support+password@polytechnique.org>',
+               $emails, 'Ton certificat d\'authentification', false);
+
+        $mymail->setBody("Visite la page suivante qui expire dans six heures :
+$baseurl/tmpPWD.php?certificat=$url
+
+Si en cliquant dessus tu n'y arrives pas, copie intégralement l'adresse dans la barre de ton navigateur.
+
+--
+Polytechnique.org
+\"Le portail des élèves & anciens élèves de l'Ecole polytechnique\"".((!empty($_POST["email"])) ? "
+
+Adresse de secours : {$_POST['email']}" : "")."
+
+
+Mail envoyé à {$_REQUEST['login']}");
+        $mymail->send();
+
+        // on cree un objet logger et on log l'evenement
+       $logger = $_SESSION['log'] = (isset($logger) ? $logger : new DiogenesCoreLogger($uid));
+       $logger->log("recovery",$emails);
+    } else {
+        $page->assign('error', "Pas de résultat correspondant aux champs entrés dans notre base de données.");
+    }
+}
+
+$page->run();
+?>
index 34519df..74b05e6 100644 (file)
@@ -1,4 +1,4 @@
-{* $Id: naissance.tpl,v 1.2 2004-07-17 12:09:45 x2000habouzit Exp $ *}
+{* $Id: naissance.tpl,v 1.3 2004-07-17 15:03:13 x2000habouzit Exp $ *}
 
 {if $etat_naissance == 'ok'}
 <script language="javascript" type="text/javascript">
@@ -23,7 +23,7 @@
   {#profil_naissance_intro#}
   </p>
   <br />
-  <table class="tiny" cellpadding="4" cellspacing="0" summary="Formulaire de naissance">
+  <table class="tinybicol" cellpadding="4" cellspacing="0" summary="Formulaire de naissance">
     <tr>
       <th colspan="2">
         {#profil_date_titre#}
diff --git a/templates/recovery.tpl b/templates/recovery.tpl
new file mode 100644 (file)
index 0000000..4bf889b
--- /dev/null
@@ -0,0 +1,89 @@
+{* $Id: recovery.tpl,v 1.1 2004-07-17 15:03:12 x2000habouzit Exp $ *}
+
+<div class="rubrique">
+  Perte du mot de passe
+</div>
+
+{dynamic}
+
+<p class="erreur">{$error}</div>
+
+{if $ok}
+
+<p class="normal">
+<strong>Un certificat d'authentification aléatoire</strong> vient de t'être attribué et envoyé à
+ton adresse en polytechnique.org.<span class="mef"> Il expire dans six heures.</span> Tu dois donc
+<strong>consulter ton mail avant son expiration</strong> et utiliser le certificat comme expliqué
+dans le mail pour changer ton mot de passe.
+</p>
+<p class="normal">
+Si tu n'accèdes pas à ton mail dans les
+6 heures, sollicite un nouveau
+certificat sur cette page.
+</p>
+
+{else}
+
+<form action="{$smarty.server.PHP_SELF}" method="post">
+  <p class="normal">
+  Il est impossible de récupérer le mot de passe perdu (nous n'avons que le résultat après un
+  chiffrement irréversible de ton mot de passe). La procédure suivante va te permettre de choisir un
+  nouveau mot de passe.
+  </p>
+  <p>
+  Après avoir complété les informations suivantes, tu recevras à ton adresse Polytechnique.org un
+  courrier électronique te permettant de choisir ce nouveau mot de passe. Si jamais tu n'as plus
+  accès aux boîtes aux lettres vers lesquelles ton adresse Polytechnique.org reroute ton courrier,
+  alors indique nous ci-dessous l'adresse à laquelle tu souhaites recevoir le courrier. Nous t'y
+  adresserons le message de création d'un nouveau mot de passe si et seulement si tes anciennes
+  boîtes sont réellement inaccessibles.
+  </p>
+  <table class="tinybicol" cellpadding="3" cellspacing="0" summary="Récupération du mot de passe">
+    <tr>
+      <th colspan="2">
+        Perte de mot de passe
+      </th>
+    </tr>
+    <tr>
+      <td class="titre">
+        Login :<br />
+        <span class="smaller">"prenom.nom"</span>
+      </td>
+      <td>
+        <input type="text" size="20" maxlength="50" name="login" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Adresse électronique : <span class="smaller">(facultatif)</span>
+      </td>
+      <td>
+        <input type="text" size="20" maxlength="50" name="email" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Date de naissance :
+      </td>
+      <td>
+        <input type="text" size="8" maxlength="8" name="birth" />
+      </td>
+    </tr>
+    <tr>
+      <td colspan="2">
+        <span class="smaller">
+          (format JJMMAAAA soit 01032000 pour 1er mars 2000)
+        </span>
+      </td>
+    </tr>
+    <tr>
+      <td colspan="2" class="center">
+        <input type="submit" value="Continuer" name="submit" />
+      </td>
+    </tr>
+  </table>
+</form>
+{/if}
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}