From 97a82cd2560a126eba54b43b7d1309b5f581183c Mon Sep 17 00:00:00 2001 From: Vincent Zanotti Date: Mon, 29 Jun 2009 00:21:20 +0200 Subject: [PATCH] Remodels the registration process (part 2). Part 1 consisted in the addition of reminder "boxes" at top of the /event page, which would propose the user several features (subscription to NL/AXLetter, ...) that were normally offered at the end of the registration process. Part 2 consisted of the removal of the "end" of the registration process: password is now set during the initial part of the registration, and is re-checked after the user has clicked on the link in the registration email. Signed-off-by: Vincent Zanotti --- classes/xorgsession.php | 15 -- htdocs/javascript/do_challenge_response_logged.js | 17 +- htdocs/javascript/motdepasse.js | 7 + modules/register.php | 294 +++++++++------------- modules/register/register.inc.php | 14 +- templates/core/password_prompt_logged.tpl | 1 - templates/register/end.tpl | 46 +++- templates/register/inscrire.mail.tpl | 5 +- templates/register/step3.tpl | 33 ++- templates/register/success.tpl | 175 ------------- 10 files changed, 194 insertions(+), 413 deletions(-) delete mode 100644 templates/register/success.tpl diff --git a/classes/xorgsession.php b/classes/xorgsession.php index f150fdd..0e55c97 100644 --- a/classes/xorgsession.php +++ b/classes/xorgsession.php @@ -257,21 +257,6 @@ class XorgSession extends PlSession return true; } - /** Start a session without authentication data for the given user. - * This is used to identify the user after his registration, to be - * removed after rewriting registration procedure. - * XXX: Temporary - */ - public function startWeakSession($user) - { - if (!$this->startSessionAs($user, AUTH_MDP)) { - $this->destroy(); - return false; - } - S::set('auth', AUTH_MDP); - return true; - } - private function securityChecks() { $mail_subject = array(); diff --git a/htdocs/javascript/do_challenge_response_logged.js b/htdocs/javascript/do_challenge_response_logged.js index f96f7c9..b34a2ec 100644 --- a/htdocs/javascript/do_challenge_response_logged.js +++ b/htdocs/javascript/do_challenge_response_logged.js @@ -18,32 +18,17 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ -function readCookie(name) -{ - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - for(var i=0;i < ca.length;i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - return null; -} - - function doChallengeResponse() { var new_pass = hash_encrypt(document.forms.login.password.value); - var old_pass = MD5(document.forms.login.password.value); str = document.forms.loginsub.username.value + ":" + hash_encrypt(document.forms.login.password.value) + ":" + document.forms.loginsub.challenge.value; document.forms.loginsub.response.value = hash_encrypt(str); - document.forms.loginsub.xorpass.value = hash_xor(new_pass, old_pass); document.forms.loginsub.remember.value = document.forms.login.remember.checked; document.forms.login.password.value = ""; document.forms.loginsub.submit(); } + // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/htdocs/javascript/motdepasse.js b/htdocs/javascript/motdepasse.js index 353a8ad..2e53dc2 100644 --- a/htdocs/javascript/motdepasse.js +++ b/htdocs/javascript/motdepasse.js @@ -39,4 +39,11 @@ function EnCryptedResponse() { document.forms.changepass2.submit(); return true; } + +function EncryptedResponseInNestedForm() { + $('[name=nouveau]').val($('[name=password]').val()); + $('[name=nouveau2]').val($('[name=password2]').val()); + EnCryptedResponse(); +} + // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/modules/register.php b/modules/register.php index 59af771..61a7dfa 100644 --- a/modules/register.php +++ b/modules/register.php @@ -26,9 +26,6 @@ class RegisterModule extends PLModule return array( 'register' => $this->make_hook('register', AUTH_PUBLIC), 'register/end' => $this->make_hook('end', AUTH_PUBLIC), - 'register/end.php' => $this->make_hook('end_old', AUTH_PUBLIC), - 'register/success' => $this->make_hook('success', AUTH_MDP), - 'register/save' => $this->make_hook('save', AUTH_MDP), ); } @@ -48,15 +45,10 @@ class RegisterModule extends PLModule unset($state['backs']); $sub_state['backs'][] = $state; if (count($sub_state['backs']) == 3) { - $alert .= "Tentative d'inscription tres hesitante - "; + $alert .= "Tentative d'inscription très hésitante - "; } } - // Compatibility with old sources, keep it atm - if (!$hash && Env::has('hash')) { - $hash = Env::v('hash'); - } - if ($hash) { $res = XDB::query( "SELECT m.uid, u.promo, u.nom, u.prenom, u.matricule, u.naissance_ini, FIND_IN_SET('watch', u.flags) @@ -104,7 +96,7 @@ class RegisterModule extends PLModule AND promo = {?}", $promo); if (!$res->fetchOneCell()) { - $err = "La promotion saisie est incorrecte ou tous les camardes de cette promo sont inscrits !"; + $err = "La promotion saisie est incorrecte ou tous les camarades de cette promotion sont inscrits !"; } else { $sub_state['step'] = 2; $sub_state['promo'] = $promo; @@ -137,13 +129,17 @@ class RegisterModule extends PLModule case 3: if (count($_POST)) { $this->load('register.inc.php'); + + // Validate the email address format and domain. require_once 'emails.inc.php'; if (!isvalid_email(Post::v('email'))) { - $err[] = "Le champ 'E-mail' n'est pas valide."; + $err[] = "Le champ 'Email' n'est pas valide."; } elseif (!isvalid_email_redirection(Post::v('email'))) { $err[] = $sub_state['forlife']." doit renvoyer vers un email existant ". "valide, en particulier, il ne peut pas être renvoyé vers lui-même."; } + + // Validate the birthday format and range. $birth = trim(Env::v('naissance')); if (!preg_match('@^[0-3]?\d/[01]?\d/(19|20)?\d{2}$@', $birth)) { $err[] = "La 'Date de naissance' n'est pas correcte."; @@ -156,12 +152,17 @@ class RegisterModule extends PLModule $promo = (int)$sub_state['promo']; if ($year > $promo - 15 || $year < $promo - 30) { $err[] = "La 'Date de naissance' n'est pas correcte."; - $alert = "Date de naissance incorrecte a l'inscription - "; + $alert = "Date de naissance incorrecte à l'inscription - "; $sub_state['wrong_naissance'] = $birth; } } - // Check if the given email is known as dangerous + // Validate the password. + if (!Post::v('response2', false)) { + $err[] = "Le mot de passe n'est pas valide."; + } + + // Check if the given email is known as dangerous. $res = XDB::query("SELECT w.state, w.description FROM emails_watch AS w WHERE w.email = {?} AND w.state != 'safe'", @@ -169,7 +170,7 @@ class RegisterModule extends PLModule $email_banned = false; if ($res->numRows()) { list($state, $description) = $res->fetchOneRow(); - $alert .= "Email surveille propose a l'inscription - "; + $alert .= "Email surveillé proposé à l'inscription - "; $sub_state['email_desc'] = $description; if ($state == 'dangerous') { $email_banned = true; @@ -179,7 +180,7 @@ class RegisterModule extends PLModule $alert .= "Inscription d'un utilisateur surveillé - "; } - if (check_ip('unsafe')) { + if (($ip_banned = check_ip('unsafe'))) { unset($err); } @@ -188,14 +189,19 @@ class RegisterModule extends PLModule } else { $sub_state['naissance'] = sprintf("%04d-%02d-%02d", intval($birth[2]), intval($birth[1]), intval($birth[0])); + $sub_state['email'] = Post::v('email'); + $sub_state['password'] = Post::v('response2'); + + // Update the current alert if the birthdate is incorrect, + // or if the IP address of the user has been banned. if ($sub_state['naissance_ini'] != '0000-00-00' && $sub_state['naissance'] != $sub_state['naissance_ini']) { $alert .= "Date de naissance incorrecte à l'inscription - "; } - $sub_state['email'] = Post::v('email'); - $ip_banned = check_ip('unsafe'); if ($ip_banned) { - $alert .= "Tentative d'inscription depuis une IP surveillee"; + $alert .= "Tentative d'inscription depuis une IP surveillée"; } + + // Prevent banned user from actually registering; save the current state for others. if ($email_banned || $ip_banned) { global $globals; $err = "Une erreur s'est produite lors de l'inscription." @@ -218,34 +224,32 @@ class RegisterModule extends PLModule if (!empty($alert)) { send_warning_mail($alert); } + $page->changeTpl('register/step'.intval($sub_state['step']).'.tpl'); + $page->addJsLink('motdepasse.js'); if (isset($err)) { $page->trigError($err); } } - function handler_end_old(&$page) - { - return $this->handler_end($page, Env::v('hash')); - } - function handler_end(&$page, $hash = null) { global $globals; - - - $page->changeTpl('register/end.tpl'); $_SESSION['sub_state'] = array('step' => 5); + // Reject registration requests from unsafe IP addresses (and remove the + // registration information from the database, to prevent IP changes). if (check_ip('unsafe')) { send_warning_mail('Une IP surveillée a tenté de finaliser son inscription'); - XDB::execute('DELETE FROM register_pending - WHERE hash = {?} AND hash != \'INSCRIT\'', $hash); + XDB::execute("DELETE FROM register_pending + WHERE hash = {?} AND hash != 'INSCRIT'", $hash); return PL_FORBIDDEN; } require_once('user.func.inc.php'); + // Retrieve the pre-registration information using the url-provided + // authentication token. if ($hash) { $res = XDB::query( "SELECT r.uid, r.forlife, r.bestalias, r.mailorg2, @@ -253,19 +257,16 @@ class RegisterModule extends PLModule u.promo, FIND_IN_SET('femme', u.flags), u.naissance_ini FROM register_pending AS r INNER JOIN auth_user_md5 AS u ON r.uid = u.user_id - WHERE hash={?} AND hash!='INSCRIT'", $hash); + WHERE hash = {?} AND hash != 'INSCRIT'", $hash); } - - if (!$hash || !list($uid, $forlife, $bestalias, $mailorg2, $password, $email, - $naissance, $nom, $prenom, $promo, $femme, $naiss_ini) = $res->fetchOneRow()) - { + if (!$hash || $res->numRows() == 0) { $page->kill("

Cette adresse n'existe pas, ou plus, sur le serveur.

-

Causes probables :

+

Causes probables :

  1. Vérifie que tu visites l'adresse du dernier - e-mail reçu s'il y en a eu plusieurs.
  2. + email reçu s'il y en a eu plusieurs.
  3. Tu as peut-être mal copié l'adresse reçue par - mail, vérifie-la à la main.
  4. + email, vérifie-la à la main.
  5. Tu as peut-être attendu trop longtemps pour confirmer. Les pré-inscriptions sont annulées tous les 30 jours.
  6. @@ -273,65 +274,91 @@ class RegisterModule extends PLModule
"); } + list($uid, $forlife, $bestalias, $mailorg2, $password, $email, + $naissance, $nom, $prenom, $promo, $femme, $naiss_ini) = $res->fetchOneRow(); + // Prepare the template for display. + $page->changeTpl('register/end.tpl'); + $page->addJsLink('do_challenge_response_logged.js'); + $page->assign('forlife', $forlife); + $page->assign('prenom', $prenom); + $page->assign('femme', $femme); + + // Check if the user did enter a valid password; if not (or if none is found), + // get her an information page. + if (Env::has('response')) { + require_once 'secure_hash.inc.php'; + $expected_response = hash_encrypt("$forlife:$password:" . S::v('challenge')); + if (Env::v('response') != $expected_response) { + $page->trigError("Mot de passe invalide."); + S::logger($uid)->log('auth_fail', 'bad password (register/end)'); + return; + } + } else { + return; + } - /***********************************************************/ - /****************** REALLY CREATE ACCOUNT ******************/ - /***********************************************************/ - - XDB::execute('UPDATE auth_user_md5 - SET password={?}, perms="user", - date=NOW(), naissance={?}, date_ins = NOW() - WHERE user_id={?}', $password, $naissance, $uid); - XDB::execute('REPLACE INTO auth_user_quick (user_id) VALUES ({?})', $uid); - XDB::execute('INSERT INTO aliases (id,alias,type) - VALUES ({?}, {?}, "a_vie")', $uid, - $forlife); - XDB::execute('INSERT INTO aliases (id,alias,type,flags) - VALUES ({?}, {?}, "alias", "bestalias")', - $uid, $bestalias); + // + // Create the user account. + // + XDB::execute("UPDATE auth_user_md5 + SET password = {?}, perms = 'user', + date = NOW(), naissance = {?}, date_ins = NOW() + WHERE user_id = {?}", $password, $naissance, $uid); + XDB::execute("REPLACE INTO auth_user_quick (user_id) VALUES ({?})", $uid); + XDB::execute("INSERT INTO aliases (id, alias, type) + VALUES ({?}, {?}, 'a_vie')", $uid, $forlife); + XDB::execute("INSERT INTO aliases (id, alias, type, flags) + VALUES ({?}, {?}, 'alias', 'bestalias')", $uid, $bestalias); if ($mailorg2) { - XDB::execute('INSERT INTO aliases (id,alias,type) - VALUES ({?}, {?}, "alias")', $uid, - $mailorg2); + XDB::execute("INSERT INTO aliases (id, alias, type) + VALUES ({?}, {?}, 'alias')", $uid, $mailorg2); } + // Add the registration email address as first and only redirection. require_once('emails.inc.php'); $user = User::getSilent($uid); $redirect = new Redirect($user); $redirect->add_email($email); - // on cree un objet logger et on log l'inscription + // Log the registration in the user session. S::logger($uid)->log('inscription', $email); - XDB::execute('UPDATE register_pending SET hash="INSCRIT" WHERE uid={?}', $uid); - + XDB::execute("UPDATE register_pending + SET hash = 'INSCRIT' + WHERE uid = {?}", $uid); + // Congratulate our newly registered user by email. $mymail = new PlMailer('register/inscription.reussie.tpl'); $mymail->assign('forlife', $forlife); $mymail->assign('prenom', $prenom); $mymail->send(); - // Enable search on the user + // Index the user, to allow her to appear in searches. require_once('user.func.inc.php'); user_reindex($uid); - // Add notification for people looking for this registration + // Notify other users which were watching for her arrival. require_once 'notifs.inc.php'; register_watch_op($uid, WATCH_INSCR); inscription_notifs_base($uid); - // Default registration on forums - $p_for = 'xorg.promo.x' . $promo; - $cible = array('xorg.general', 'xorg.pa.divers', 'xorg.pa.logements', $p_for); - foreach ($cible as $val) { + // Forcibly register the new user on default forums. + $promo_forum = 'xorg.promo.x' . $promo; + $registered_forums = array('xorg.general', 'xorg.pa.divers', 'xorg.pa.logements', $promo_forum); + foreach ($registered_forums as $forum) { XDB::execute("INSERT INTO forums.abos (fid,uid) - SELECT fid, {?} FROM forums.list WHERE nom={?}", $uid, $val); - if (XDB::affectedRows() == 0 && $val == $p_for) { + SELECT fid, {?} + FROM forums.list + WHERE nom = {?}", + $uid, $val); + + // Notify the newsgroup admin of the promotion forum needs be created. + if (XDB::affectedRows() == 0 && $forum == $promo_forum) { $res = XDB::query("SELECT SUM(perms IN ('admin','user') AND deces = 0), COUNT(*) FROM auth_user_md5 WHERE promo = {?}", $promo); - list($effau, $effid) = $res->fetchOneRow(); - if (5 * $effau > $effid) { // + + list($promo_registered_count, $promo_count) = $res->fetchOneRow(); + if ($promo_registered_count > 0.2 * $promo_count) { $mymail = new PlMailer('admin/forums-promo.mail.tpl'); $mymail->assign('promo', $promo); $mymail->send(); @@ -339,28 +366,32 @@ class RegisterModule extends PLModule } } - // update number of subscribers (perms has changed) + // Update the global registration count stats. $globals->updateNbIns(); - if (!Platal::session()->startWeakSession($uid)) { - return PL_FORBIDDEN; - } + // Try to start a session (so the user don't have to log in); we will use + // the password available in Post:: to authenticate the user. + Platal::session()->start(AUTH_MDP); + + // + // Update collateral data sources, and inform watchers by email. + // - /***********************************************************/ - /************* envoi d'un mail au démarcheur ***************/ - /***********************************************************/ + // Email the referrer(s) of this new user. $res = XDB::iterRow( "SELECT sa.alias, IF(s.nom_usage,s.nom_usage,s.nom) AS nom, s.prenom, FIND_IN_SET('femme', s.flags) AS femme, GROUP_CONCAT(m.email) AS mails, MAX(m.last) AS dateDernier FROM register_marketing AS m - INNER JOIN auth_user_md5 AS s ON ( m.sender = s.user_id ) - INNER JOIN aliases AS sa ON ( sa.id = m.sender - AND FIND_IN_SET('bestalias', sa.flags) ) + INNER JOIN auth_user_md5 AS s ON (m.sender = s.user_id) + INNER JOIN aliases AS sa ON (sa.id = m.sender + AND FIND_IN_SET('bestalias', sa.flags)) WHERE m.uid = {?} GROUP BY m.sender ORDER BY dateDernier DESC", $uid); - XDB::execute("UPDATE register_mstats SET success=NOW() WHERE uid={?}", $uid); + XDB::execute("UPDATE register_mstats + SET success = NOW() + WHERE uid = {?}", $uid); $market = array(); while (list($salias, $snom, $sprenom, $sfemme, $mails, $dateDernier) = $res->next()) { @@ -375,12 +406,13 @@ class RegisterModule extends PLModule . "vient à l'instant de terminer son inscription.\n\n" . "Merci de ta participation active à la reconnaissance de ce site !!!\n\n" . "Bien cordialement,\n" + . "-- \n" . "L'équipe Polytechnique.org"; $mymail->setTxtBody(wordwrap($msg, 72)); $mymail->send(); } - /**** send a mail to X.org administrators ****/ + // Email the plat/al administrators about the registration. if ($globals->register->notif) { $mymail = new PlMailer(); $mymail->setSubject("Inscription de $prenom $nom (X$promo)"); @@ -408,111 +440,9 @@ class RegisterModule extends PLModule $mymail->send(); } + // Remove old pending marketing requests for the new user. Marketing::clear($uid); - pl_redirect('register/success'); - $page->assign('uid', $uid); - } - - function handler_success(&$page) - { - global $globals; - $page->changeTpl('register/success.tpl'); - $page->assign('user', S::user()); - - $_SESSION['sub_state'] = array('step' => 5); - if (Env::has('response2')) { - $_SESSION['password'] = $password = Post::v('response2'); - - XDB::execute('UPDATE auth_user_md5 SET password={?} - WHERE user_id={?}', $password, - S::v('uid')); - - // If GoogleApps is enabled, and the user did choose to use synchronized passwords, - // and if the (stupid) user has decided to use /register/success another time, - // updates the Google Apps password as well. - if ($globals->mailstorage->googleapps_domain) { - require_once 'googleapps.inc.php'; - $account = new GoogleAppsAccount(S::user()); - if ($account->active() && $account->sync_password) { - $account->set_password($password); - } - } - - S::logger()->log('passwd'); - Platal::session()->setAccessCookie(true); - - $page->assign('mdpok', true); - } - - $res = XDB::iterRow("SELECT sub, domain - FROM register_subs - WHERE uid = {?} AND type = 'list' - ORDER BY domain", - S::i('uid')); - $current_domain = null; - $lists = array(); - while (list($sub, $domain) = $res->next()) { - if ($current_domain != $domain) { - $current_domain = $domain; - $client = new MMList(S::v('uid'), S::v('password'), $domain); - } - list($details, ) = $client->get_members($sub); - $lists["$sub@$domain"] = $details; - } - $page->assign_by_ref('lists', $lists); - - $page->addJsLink('motdepasse.js'); - } - - function handler_save(&$page) - { - global $globals; - - // Finish registration procedure - if (Post::v('register_from_ax_question')) { - XDB::execute('UPDATE auth_user_quick - SET profile_from_ax = 1 - WHERE user_id = {?}', - S::v('uid')); - } - if (Post::v('add_to_nl')) { - require_once 'newsletter.inc.php'; - NewsLetter::subscribe(); - } - if (Post::v('add_to_ax')) { - Platal::load('axletter', 'axletter.inc.php'); - AXLetter::subscribe(); - } - if (Post::v('add_to_promo')) { - $r = XDB::query('SELECT id FROM groupex.asso WHERE diminutif = {?}', - S::v('promo')); - $asso_id = $r->fetchOneCell(); - XDB::execute('REPLACE INTO groupex.membres (uid,asso_id) - VALUES ({?}, {?})', - S::v('uid'), $asso_id); - $mmlist = new MMList(S::v('uid'), S::v('password')); - $mmlist->subscribe("promo".S::v('promo')); - } - if (Post::v('sub_ml')) { - $subs = array_keys(Post::v('sub_ml')); - $current_domain = null; - foreach ($subs as $list) { - list($sub, $domain) = explode('@', $list); - if ($domain != $current_domain) { - $current_domain = $domain; - $client = new MMList(S::v('uid'), S::v('password'), $domain); - } - $client->subscribe($sub); - } - } - if (Post::v('imap')) { - require_once 'emails.inc.php'; - $user = S::user(); - $storage = new EmailStorage($user, 'imap'); - $storage->activate(); - } - pl_redirect('profile/edit'); } } diff --git a/modules/register/register.inc.php b/modules/register/register.inc.php index f7a5c4e..5e153d7 100644 --- a/modules/register/register.inc.php +++ b/modules/register/register.inc.php @@ -231,21 +231,19 @@ function finish_ins($sub_state) extract($sub_state); require_once('secure_hash.inc.php'); - $pass = rand_pass(); - $pass_encrypted = hash_encrypt($pass); - $hash = rand_url_id(12); - - XDB::execute('UPDATE auth_user_md5 SET last_known_email={?} WHERE matricule = {?}', $email, $mat); - + $hash = rand_url_id(12); + XDB::execute( + "UPDATE auth_user_md5 + SET last_known_email = {?} + WHERE matricule = {?}", $email, $mat); XDB::execute( "REPLACE INTO register_pending (uid, forlife, bestalias, mailorg2, password, email, date, relance, naissance, hash) VALUES ({?}, {?}, {?}, {?}, {?}, {?}, NOW(), 0, {?}, {?})", - $uid, $forlife, $bestalias, $mailorg2, $pass_encrypted, $email, $naissance, $hash); + $uid, $forlife, $bestalias, $mailorg2, $password, $email, $naissance, $hash); $mymail = new PlMailer('register/inscrire.mail.tpl'); $mymail->assign('mailorg', $bestalias); $mymail->assign('lemail', $email); - $mymail->assign('pass', $pass); $mymail->assign('baseurl', $globals->baseurl); $mymail->assign('hash', $hash); $mymail->assign('subj', $bestalias."@" . $globals->mail->domain); diff --git a/templates/core/password_prompt_logged.tpl b/templates/core/password_prompt_logged.tpl index 981205e..ef2f060 100644 --- a/templates/core/password_prompt_logged.tpl +++ b/templates/core/password_prompt_logged.tpl @@ -65,7 +65,6 @@ {xsrf_token_field} - diff --git a/templates/register/end.tpl b/templates/register/end.tpl index c0147d5..12449a2 100644 --- a/templates/register/end.tpl +++ b/templates/register/end.tpl @@ -22,14 +22,44 @@ {include file="register/breadcrumb.tpl"} -

:'(

+

Confirmation de ton inscription

-

-Une erreur est survenue lors de ton inscription... -

-

-Contacte nous au plus vite, en nous indiquant ce nombre : {$uid} à l'adresse -support@{#globals.mail.domain#} -

+

Merci {$prenom} d'avoir choisi de t'inscrire. Pour finaliser ton inscription, +il te suffit de taper ton mot de passe ci-dessous. Tu pourras ensuite librement +accéder au site, et à notre annuaire en ligne !

+ +
+ + + + + + + + + + + + + + + + +
Nom d'utilisateur :{$forlife}
Mot de passe :
strictement personnelle'} colspan="2"> + +
+
+ +
+
+ + + + +
+
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/inscrire.mail.tpl b/templates/register/inscrire.mail.tpl index d2d594f..0a1fedc 100644 --- a/templates/register/inscrire.mail.tpl +++ b/templates/register/inscrire.mail.tpl @@ -33,9 +33,7 @@ Ton inscription sur Polytechnique.org est presque terminée ! Après activation, tes paramètres de connexion seront : identifiant : {$mailorg} -mot de passe : {$pass} - -Nous te proposerons de remplacer ce mot de passe temporaire par un mot de passe de ton choix. +mot de passe : celui que tu as choisi Rends-toi maintenant sur la page web suivante afin d'activer ta pré-inscription : @@ -46,6 +44,7 @@ Si en cliquant dessus tu n'y arrives pas, copie intégralement ce lien dans la b Nous espérons que tu profiteras pleinement des services en ligne de Polytechnique.org ; s'ils te convainquent, n'oublie pas d'en parler aux camarades autour de toi ! Bien cordialement, +-- L'équipe de Polytechnique.org, Le portail des élèves et anciens élèves de l'École polytechnique {/if} diff --git a/templates/register/step3.tpl b/templates/register/step3.tpl index bc10f19..4a8c003 100644 --- a/templates/register/step3.tpl +++ b/templates/register/step3.tpl @@ -26,14 +26,14 @@

Formulaire de pré-inscription

-
+ {if $smarty.session.sub_state.mailorg2}

Tu n'as pour le moment aucun homonyme dans notre base de données. Nous allons donc te donner l'adresse {$smarty.session.sub_state.bestalias}@{#globals.mail.domain#}, en plus de ton adresse à vie {$smarty.session.sub_state.forlife}@{#globals.mail.domain#}. Note que tu pourrais perdre l'adresse {$smarty.session.sub_state.bestalias}@{#globals.mail.domain#} - si un homonyme s'inscrivait — cela reste assez rare. + si un homonyme s'inscrivait, même si cela reste assez rare.

{else}

@@ -53,6 +53,12 @@ t'envoyer tes informations de connexion.

+

Nous te demandons également un mot de passe, qui te permettra de te reconnecter au site ultérieurement. + Pour une sécurité optimale, ton mot de passe ne circulera jamais en clair, et sera stocké sous une forme chiffrée + irréversiblement sur nos serveurs. +

+ + - + + + + +
@@ -68,7 +74,7 @@
Date de naissance
jour/mois/année @@ -78,14 +84,31 @@ (demandée si tu perds ton mot de passe)
+ Mot de passe
+ au moins 6 caractères +
+ +
+ (retape ton mot de passe)
+ {checkpasswd prompt="password" text="Terminer la pré-inscription"} +
- +
- +
+
+ + +
+
{/if} {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/register/success.tpl b/templates/register/success.tpl deleted file mode 100644 index 626d742..0000000 --- a/templates/register/success.tpl +++ /dev/null @@ -1,175 +0,0 @@ -{**************************************************************************} -{* *} -{* Copyright (C) 2003-2009 Polytechnique.org *} -{* http://opensource.polytechnique.org/ *} -{* *} -{* This program is free software; you can redistribute it and/or modify *} -{* it under the terms of the GNU General Public License as published by *} -{* the Free Software Foundation; either version 2 of the License, or *} -{* (at your option) any later version. *} -{* *} -{* This program is distributed in the hope that it will be useful, *} -{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} -{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} -{* GNU General Public License for more details. *} -{* *} -{* You should have received a copy of the GNU General Public License *} -{* along with this program; if not, write to the Free Software *} -{* Foundation, Inc., *} -{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} -{* *} -{**************************************************************************} - -{include file="register/breadcrumb.tpl"} - -

Bravo !!!

- -

-Tu as maintenant accès au site !
-Ton adresse électronique à vie {$user->forlifeEmail()} est déjà ouverte, essaie-la ! -

-

- Remarque : m4x.org est un domaine "discret" qui veut dire "mail for X" et - qui comporte exactement les mêmes adresses que le domaine polytechnique.org. -

- - -

Mot de passe

- -{if $mdpok} - -

-Ton mot de passe a bien été mis à jour ! -

- -{else} - -

- Tu as reçu un mot de passe par défaut, si tu souhaites en changer, tu peux le faire ici :
- Remarque : il doit faire au moins 6 caractères et comporter deux types de - caractères parmi les suivants : lettres minuscules, lettres majuscules, chiffres, caractères spéciaux. -

- -
- - - - - - - - - - - - - - - - - - - -
- Saisie du nouveau mot de passe -
- Nouveau mot de passe : - - -
- Retape-le une fois : - - -
Sécurité{checkpasswd prompt="nouveau" submit="submitn"}
- -
-
- -
-
-
- -

-N'oublie pas : en cas de perte de ton mot de passe, -il existe une procédure de récupération automatique ; mais elle nécessite -que ton adresse email sur le site soit toujours valable. Dans le cas contraire, -il te faudra contacter l'équipe support. -

- -{/if} - -

Rejoindre la communauté

- -
-

- Pour rejoindre la communauté des X sur le web, nous t'invitons vivement à remplir ton profil ! -

- -

- Cet annuaire n'est pas redondant avec l'annuaire de l'AX ; il est synchronisé automatiquement, - d'une manière que tu choisis : -

- -
-
vers l'AX
-
- tu peux choisir dans ton profil sur Polytechnique.org de transmettre automatiquement à l'AX certains éléments de ta fiche, - au fur et à mesure que tu les modifies. - (Les données transmises seront uniquement celles que tu as décidé de transmettre). -
-
-
- nous mettons à jour ta fiche depuis les données de l'annuaire de l'AX si tu le souhaites.
- (si tu ne le souhaites pas, décoche la case ci-dessus) -
-
- -

- Pour profiter pleinement de ta nouvelle inscription, nous te proposons -

- -
-
-
- de recevoir chaque mois la lettre mensuelle de Polytechnique.org contenant les activités et nouvelles de la communauté des X. -
-
-
- de recevoir les informations importantes de l'AX. -
-
-
- de recevoir les informations plus spécifiques de ta promotion pour pouvoir participer plus facilement aux événements - qu'elle organise. Nous t'inscrivons donc dans le groupe de la promotion {$smarty.session.promo}. -
-
-
- d'avoir un accès de secours aux 30 derniers jours d'emails reçus sur ton adresse Polytechnique.org. -
-
- - {if $lists|@count neq 0} -

- Des camarades souhaitent que tu t'inscrives aux listes suivantes : -

- -
- {foreach from=$lists key=list item=details} -
- {if $details.info} -
- {$details.info|nl2br} -
- {/if} - {/foreach} -
- {/if} - -

* décoche les cases si tu ne souhaites pas être inscrit à la liste de diffusion correspondante

- -
- -
-
- -{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} -- 2.1.4