From 8858cfc177511f7eba58876c5099b1253441203d Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Sun, 9 Jul 2006 21:25:21 +0000 Subject: [PATCH] recovery.php => platal.php git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@408 839d8a87-29fc-0310-9880-83ba4fa771e5 --- bin/emails.broken.php | 4 +- htdocs/recovery.php | 79 ------------------------------------ modules/platal.php | 66 ++++++++++++++++++++++++++++++ templates/password_prompt.tpl | 2 +- templates/password_prompt_logged.tpl | 2 +- 5 files changed, 70 insertions(+), 83 deletions(-) delete mode 100644 htdocs/recovery.php diff --git a/bin/emails.broken.php b/bin/emails.broken.php index cf58df1..e5a7021 100755 --- a/bin/emails.broken.php +++ b/bin/emails.broken.php @@ -70,7 +70,7 @@ d'une panne temporaire. Si tu souhaites changer la liste des adresses sur lesquelles tu reçois le courrier qui t'es envoyé à ton adresse polytechnicienne, il te suffit de te rendre sur la page : - {$globals->baseurl}/emails/redirect.php + {$globals->baseurl}/emails/redirect A bientôt sur Polytechnique.org ! @@ -81,7 +81,7 @@ polytechnicienne, il te suffit de te rendre sur la page : PS : si jamais tu ne disposes plus du mot de passe te permettant d'accéder au site, rends toi sur la page - {$globals->baseurl}/recovery.php + {$globals->baseurl}/recovery elle te permettra de créer un nouveau mot de passe après avoir rentré ton login ({$x['alias']}) et ta date de naissance !"; diff --git a/htdocs/recovery.php b/htdocs/recovery.php deleted file mode 100644 index 8045fd2..0000000 --- a/htdocs/recovery.php +++ /dev/null @@ -1,79 +0,0 @@ -trig_run('Date de naissance incorrecte ou incohérente'); - } - $birth = sprintf('%s-%s-%s', substr(Env::get('birth'),4,4), substr(Env::get('birth'),2,2), substr(Env::get('birth'),0,2)); - - $mailorg = strtok(Env::get('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 - - $res = $globals->xdb->query( - "SELECT user_id, naissance - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (u.user_id=a.id AND type!='homonyme') - WHERE a.alias={?} AND u.perms IN ('admin','user') AND u.deces=0", $mailorg); - list($uid, $naissance) = $res->fetchOneRow(); - - if ($naissance == $birth) { - $page->assign('ok', true); - - $url = rand_url_id(); - $globals->xdb->execute('INSERT INTO perte_pass (certificat,uid,created) VALUES ({?},{?},NOW())', $url, $uid); - $res = $globals->xdb->query('SELECT email FROM emails WHERE uid = {?} AND NOT FIND_IN_SET("filter", flags)', $uid); - $mails = implode(', ', $res->fetchColumn()); - - require_once("diogenes/diogenes.hermes.inc.php"); - $mymail = new HermesMailer(); - $mymail->setFrom('"Gestion des mots de passe" '); - $mymail->addTo($mails); - $mymail->setSubject('Ton certificat d\'authentification'); - $mymail->setTxtBody("Visite la page suivante qui expire dans six heures : -{$globals->baseurl}/tmpPWD/$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\"".(Post::get('email') ? " - -Adresse de secours : \n ".Post::get('email') : "")." - -Mail envoyé à ".Env::get('login')); - $mymail->send(); - - // on cree un objet logger et on log l'evenement - $logger = $_SESSION['log'] = new DiogenesCoreLogger($uid); - $logger->log('recovery', $emails); - } else { - $page->trig('Pas de résultat correspondant aux champs entrés dans notre base de données.'); - } -} - -$page->run(); -?> diff --git a/modules/platal.php b/modules/platal.php index 930e6db..fe02ded 100644 --- a/modules/platal.php +++ b/modules/platal.php @@ -33,6 +33,7 @@ class PlatalModule extends PLModule 'password' => $this->make_hook('password', AUTH_MDP), 'tmpPWD' => $this->make_hook('tmpPWD', AUTH_PUBLIC), 'password/smtp' => $this->make_hook('smtppass', AUTH_MDP), + 'recovery' => $this->make_hook('recovery', AUTH_PUBLIC), // happenings related thingies 'rss' => $this->make_hook('rss', AUTH_PUBLIC), @@ -165,6 +166,71 @@ class PlatalModule extends PLModule return PL_OK; } + function handler_recovery(&$page) + { + global $globals; + + $page->changeTpl('recovery.tpl'); + + if (!Env::has('login') || !Env::has('birth')) { + return PL_OK; + } + + if (!ereg('[0-3][0-9][0-1][0-9][1][9]([0-9]{2})', Env::get('birth'))) { + $page->trig_run('Date de naissance incorrecte ou incohérente'); + } + $birth = sprintf('%s-%s-%s', substr(Env::get('birth'),4,4), substr(Env::get('birth'),2,2), substr(Env::get('birth'),0,2)); + + $mailorg = strtok(Env::get('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 + + $res = $globals->xdb->query( + "SELECT user_id, naissance + FROM auth_user_md5 AS u + INNER JOIN aliases AS a ON (u.user_id=a.id AND type!='homonyme') + WHERE a.alias={?} AND u.perms IN ('admin','user') AND u.deces=0", $mailorg); + list($uid, $naissance) = $res->fetchOneRow(); + + if ($naissance == $birth) { + $page->assign('ok', true); + + $url = rand_url_id(); + $globals->xdb->execute('INSERT INTO perte_pass (certificat,uid,created) VALUES ({?},{?},NOW())', $url, $uid); + $res = $globals->xdb->query('SELECT email FROM emails WHERE uid = {?} AND NOT FIND_IN_SET("filter", flags)', $uid); + $mails = implode(', ', $res->fetchColumn()); + + require_once "diogenes/diogenes.hermes.inc.php"; + $mymail = new HermesMailer(); + $mymail->setFrom('"Gestion des mots de passe" '); + $mymail->addTo($mails); + $mymail->setSubject('Ton certificat d\'authentification'); + $mymail->setTxtBody("Visite la page suivante qui expire dans six heures : +{$globals->baseurl}/tmpPWD/$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\"".(Post::get('email') ? " + +Adresse de secours : + ".Post::get('email') : "")." + +Mail envoyé à ".Env::get('login')); + $mymail->send(); + + // on cree un objet logger et on log l'evenement + $logger = $_SESSION['log'] = new DiogenesCoreLogger($uid); + $logger->log('recovery', $emails); + } else { + $page->trig('Pas de résultat correspondant aux champs entrés dans notre base de données.'); + } + + return PL_OK; + } + function handler_tmpPWD(&$page, $certif = null) { global $globals; diff --git a/templates/password_prompt.tpl b/templates/password_prompt.tpl index cfff53b..5ba099f 100644 --- a/templates/password_prompt.tpl +++ b/templates/password_prompt.tpl @@ -101,7 +101,7 @@ Si tu n'es pas {insert name="getName"}, change le login ci-dessous, ou rends-toi
 [ ? ] - mot de passe perdu ? + mot de passe perdu ? diff --git a/templates/password_prompt_logged.tpl b/templates/password_prompt_logged.tpl index d1971f2..4c7e821 100644 --- a/templates/password_prompt_logged.tpl +++ b/templates/password_prompt_logged.tpl @@ -59,7 +59,7 @@
 [ ? ] - Mot de passe perdu ? + Mot de passe perdu ? -- 2.1.4