renew cookie a little
authorPierre Habouzit (MadCoder <pierre.habouzit@m4x.org>
Wed, 29 Dec 2004 10:40:13 +0000 (10:40 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:27:00 +0000 (23:27 +0200)
git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-172

htdocs/cookie_off.php [deleted file]
htdocs/cookie_on.php [deleted file]
htdocs/javascript/do_challenge_response.js
htdocs/motdepassemd5.php
htdocs/preferences.php
include/xorg/session.inc.php
templates/password_prompt.head.tpl
templates/password_prompt.tpl
templates/password_prompt_logged.tpl
templates/preferences.tpl

diff --git a/htdocs/cookie_off.php b/htdocs/cookie_off.php
deleted file mode 100644 (file)
index 772e366..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/***************************************************************************
- *  Copyright (C) 2003-2004 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                *
- ***************************************************************************/
-
-require_once("xorg.inc.php");
-new_skinned_page('index.tpl', AUTH_COOKIE);
-
-setcookie('ORGaccess','',(time()+1),'/','',0);
-$_SESSION['log']->log("cookie_off");
-
-// si on a le cookie, et qu'on est pas identifié,
-// s'enlever le cookie revient à se déconnecter
-if(!identified()) {
-    session_destroy();
-    $_SESSION = array();
-    header("Location: index.php");
-}
-
-header("Location: preferences.php");
-?>
diff --git a/htdocs/cookie_on.php b/htdocs/cookie_on.php
deleted file mode 100644 (file)
index ce3cf1f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/***************************************************************************
- *  Copyright (C) 2003-2004 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                *
- ***************************************************************************/
-
-require_once("xorg.inc.php");
-new_skinned_page('cookie_on.tpl', AUTH_MDP);
-
-$cookie = md5(Session::get('password'));
-setcookie('ORGaccess',$cookie,(time()+25920000),'/','',0);
-$_SESSION['log']->log("cookie_on");
-
-$page->run();
-?>
index f3eab7c..806dc87 100644 (file)
@@ -25,6 +25,7 @@ function doChallengeResponse() {
 
     document.forms.loginsub.response.value = MD5(str);
     document.forms.loginsub.username.value = document.forms.login.username.value;
+    document.forms.loginsub.remember.value = document.forms.login.remember.value;
     document.forms.login.password.value = "";
     document.forms.loginsub.submit();
 }
index fe28399..4e7a7f7 100644 (file)
 
 require_once('xorg.inc.php');
 
-if (Env::has('response2'))  {             // la variable $response existe-t-elle ?
-    // OUI, alors changeons le mot de passe
-    $password = Post::get('response2');
-    $sql      = "UPDATE auth_user_md5 SET password='$password' WHERE user_id=".Session::getInt('uid');
-    $log      =& Session::getMixed('log');
+if (Env::has('response2'))  {
+    $_SESSION['password'] = $password = Post::get('response2');
+    
+    $sql = "UPDATE auth_user_md5 SET password='$password' WHERE user_id=".Session::getInt('uid');
     $globals->db->query($sql);
+    
+    $log =& Session::getMixed('log');
     $log->log('passwd', '');
+
+    if (Cookie::get('ORGaccess')) {
+        setcookie('ORGaccess', md5($password), (time()+25920000), '/', '' ,0);
+    }
+
     new_skinned_page('motdepassemd5.success.tpl', AUTH_MDP);
     $page->run();
 }
index 104542c..6d49391 100644 (file)
 require_once("xorg.inc.php");
 new_skinned_page('preferences.tpl', AUTH_COOKIE);
 
-$has_cookie = (Cookie::has('ORGaccess') ? 'cookie' : '');
-$page->assign('has_cookie', $has_cookie);
+if (Env::has('remember')) {
+    setcookie('ORGaccess', md5(Session::get('password')),  (time()+25920000), '/', '' ,0);
+    $_SESSION['log']->log('cookie_on');
+    header('Location: preferences.php');
+}
+
+if (Env::has('forget')) {
+    setcookie('ORGaccess', '', time() - 3600, '/', '', 0);
+    $_SESSION['log']->log("cookie_off");
+    if (!identified()) {
+        session_destroy();
+        $_SESSION = array();
+        header('Location: index.php');
+    }
+    header('Location: preferences.php');
+}
 
 $page->run($has_cookie);
 ?>
index 0b27f0d..ddd62b3 100644 (file)
@@ -96,6 +96,13 @@ class XorgSession extends DiogenesCoreSession
                        $logger->log('auth_ok');
                     }
                    start_connexion($uid, true);
+                    if (Env::has('remember')) {
+                        $cookie = md5(Session::get('password'));
+                        setcookie('ORGaccess',$cookie,(time()+25920000),'/','',0);
+                        if ($logger) {
+                            $logger->log("cookie_on");
+                        }
+                    }
                    return true;
                } elseif ($logger) {
                     $logger->log('auth_fail','bad password');
@@ -302,7 +309,7 @@ function start_connexion ($uid, $identified)
     } else {
         $logger = Session::getMixed('log', new DiogenesCoreLogger($uid));
         $logger->log("connexion", $_SERVER['PHP_SELF']);
-       setcookie('ORGuid', $uid, (time()+25920000), '/', '', 0);
+        setcookie('ORGuid', $uid, (time()+25920000), '/', '', 0);
     }
 
     $_SESSION         = $sess;
index 3011924..09df2ca 100644 (file)
@@ -17,9 +17,8 @@
  *  Foundation, Inc.,                                                      *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************}
-
-
-    <script src="{"javascript/md5.js"|url}" type="text/javascript"></script>
-    <script src="{"javascript/do_challenge_response.js"|url}" type="text/javascript"></script>
+<script src="{rel}/javascript/md5.js" type="text/javascript"></script>
+<script src="{rel}/javascript/do_challenge_response.js" type="text/javascript"></script>
 
 {* vim:set et sw=2 sts=2 sws=2: *}
index 3ff250f..e7ab668 100644 (file)
@@ -35,7 +35,7 @@
 <p>
 <strong>Merci de rentrer ton mot de passe pour démarrer une connexion au site.</strong>
 Si tu n'es pas {insert name="getName"}, change le login ci-dessous, ou rends-toi sur
-<a href="{"inscription/"|url}">la page d'inscription</a>.
+<a href="{rel}/inscription/">la page d'inscription</a>.
 </p>
 {/min_auth}
 
@@ -52,7 +52,7 @@ Si tu n'es pas {insert name="getName"}, change le login ci-dessous, ou rends-toi
   Si tu n'es jamais venu sur le site, <strong>il faut t'enregistrer auprès de
     nous</strong> pour obtenir un accès. Polytechnique.org c'est l'e-mail des X,
   l'annuaire en ligne, plus un tas d'autres services.  Nous te fournirons un accès le plus
-  rapidement possible. <strong> <a href="{"inscription/"|url}">Clique ici pour nous demander tes
+  rapidement possible. <strong> <a href="{rel}inscription/">Clique ici pour nous demander tes
       paramètres personnels.</a></strong>
   </li>
 </ul>
@@ -83,9 +83,15 @@ Si tu n'es pas {insert name="getName"}, change le login ci-dessous, ou rends-toi
       </td>
     </tr>
     <tr>
+      <td></td>
       <td>
-        <img src="{"images/pi.png"|url}" alt=" [ ? ] " />
-        <a href="{"recovery.php"|url}">J'ai perdu mon mot de passe</a>
+        <input type="checkbox" name="remember" /> Se souvenir de moi
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <img src="{rel}/images/pi.png" alt=" [ ? ] " />
+        <a href="{rel}/recovery.php">mot de passe perdu ?</a>
       </td>
       <td class="right">
         <input type="submit" name="submitbtn" value="Envoyer" />
@@ -94,7 +100,7 @@ Si tu n'es pas {insert name="getName"}, change le login ci-dessous, ou rends-toi
   </table>
 </form>
 <p>
-Problème de connexion ? <a href="{"docs/faq.php#connect"|url}">La réponse est là.</a>
+Problème de connexion ? <a href="{rel}/docs/faq.php#connect">La réponse est là.</a>
 <br />
 (Activer obligatoirement le <strong>javascript</strong>)
 </p>
@@ -112,6 +118,7 @@ Probl
     <input type="hidden" name="challenge" value="{$smarty.session.session->challenge}" />
     <input type="hidden" name="response"  value="" />
     <input type="hidden" name="username"  value="" />
+    <input type="hidden" name="remember"  value="" />
   </div>
 </form>
 
index 4659612..a4c59a3 100644 (file)
       </td>
     </tr>
     <tr>
+      <td></td>
+      <td>
+        <input type="checkbox" name="remember" checked="checked" /> Se souvenir de moi
+      </td>
+    </tr>
+    <tr>
       <td>
         <img src="{"images/pi.png"|url}" alt=" [ ? ] " />
-        <a href="{"recovery.php"|url}">J'ai perdu mon mot de passe</a>
+        <a href="{rel}/recovery.php">Mote passe perdu ?</a>
       </td>
       <td class="right">
         <input  type="submit" name="submitbtn" value="Envoyer" />
@@ -70,6 +76,7 @@
   <div>
     <input type="hidden" name="challenge" value="{$smarty.session.session->challenge}" />
     <input type="hidden" name="username"  value="{$smarty.cookies.ORGuid}" />
+    <input type="hidden" name="remember"  value="" />
     <input type="hidden" name="response"  value="" />
   </div>
 </form>
index c75e6ba..38c8570 100644 (file)
   </tr>
   <tr class="impair">
     <td>
-      {if $has_cookie}
-      <h3><a href="cookie_off.php">Supprimer l'accès permanent</a></h3>
+      {if $smarty.cookies.ORGaccess}
+      <h3><a href="?forget=1">M'oublier</a></h3>
       <div class='explication'>
         Clique sur le lien ci-dessus pour retirer l'accès sans mot de passe au site. Après avoir
-        cliqué, tu devras à nouveau entrer ton mot de passe pour accéder aux différentes pages
-        comme initialement.
+        cliqué, tu devras entrer ton mot de passe pour accéder aux différentes pages.
       </div>
       {else}
-      <h3><a href="cookie_on.php">Attribuer un cookie d'authentification permanente</a></h3>
+      <h3><a href="?remember=1">Se souvenir de moi</a></h3>
       <div class='explication'>
-        Cette option te permet de ne plus avoir à entrer ton mot de passe pour la majorité des pages
-        du site. Ce dernier reste cependant nécessaire pour le profil ou le changement de mot de
-        passe. Il s'agit d'une option destinée aux utilisateurs fréquents du site, plutôt à l'aise
-        avec l'informatique, et pour un ordinateur non partagé.
+        Cette option te permet de ne plus avoir à entrer ton mot de passe pour la majorité des pages du site.
+        Il s'agit d'une option destinée aux utilisateurs fréquents du site, et pour un ordinateur non partagé.
       </div>
       {/if}
     </td>