diff --git a/ecrire/login.php3 b/ecrire/login.php3 index 0529bfbf01010e37d0e85150fd7909517fe7cd3d..fe7c4037082a5d6468787184f1432bb68a10322f 100644 --- a/ecrire/login.php3 +++ b/ecrire/login.php3 @@ -49,8 +49,6 @@ if ($login) else $focus = 'document.forms[0].elements[0].focus();'; -// y a-t-il d'anciennes sessions pour ce login ? Si oui proposer de les zapper -$zap_sessions = zap_sessions($login, false); if ($echec_cookie == "oui") { install_debut_html("$nom_site : problème de cookie", $focus); @@ -91,7 +89,6 @@ if ($login) { this.session_password.value = \"\"; }'"; echo ">\n"; - //echo "<div style='border: 1px dashed #999999; padding: 10px;'>\n"; // statut if ($row['statut'] == '0minirezo') { $icone = "redacteurs-admin-24.gif"; @@ -100,7 +97,6 @@ if ($login) { } debut_cadre_relief($icone); if ($erreur) echo "<font color=red><b>$erreur</b></font><p>"; - //echo "<label><b>Login (identifiant de connexion au site)</b><br></label>\n"; if (file_exists("../IMG/auton$id_auteur.gif")) $logo = "../IMG/auton$id_auteur.gif"; else if (file_exists("../IMG/auton$id_auteur.jpg")) $logo = "../IMG/auton$id_auteur.jpg"; @@ -111,7 +107,7 @@ if ($login) { // si jaja actif, on affiche le login en 'dur', et on le passe en champ hidden echo "<script type=\"text/javascript\"><!-- - document.write('<b>$login</b> <br><font size=1>[<a href=\\'../spip_cookie.php3?cookie_admin=non&redirect=./ecrire/login.php3\\'>se connecter sous un autre identifiant</a>]</font>'); + document.write('<b>$login</b> <br><font size=\\'2\\'>[<a href=\\'../spip_cookie.php3?cookie_admin=non&redirect=./ecrire/login.php3\\'>se connecter sous un autre identifiant</a>]</font>'); //--></script>\n"; echo "<input type='hidden' name='session_login_hidden' value='$login'>"; @@ -125,19 +121,67 @@ if ($login) { echo "<input type='hidden' name='redirect_echec' value='$redirect_echec'>\n"; echo "<input type='hidden' name='session_password_md5' value=''>\n"; echo "<input type='hidden' name='next_session_password_md5' value=''>\n"; - if ($zap_sessions) { - echo "<font size='2' face='verdana,arial,helvetica'>"; - echo propre("Une autre connexion à l'espace privée utilisant cet identifiant est en cours. Si vous êtes en train d'utiliser un autre logiciel pour accéder à l'espace privé, cela est parfaitement normal, et vous pouvez décocher la case ci-dessous. Si vous n'utilisez aucun autre logiciel de navigation <i>en ce moment</i>, laissez cette case cochée, cela renforcera la sécurité du système."); - echo "<br><input type='checkbox' name='zap_sessions' checked id='zap_sessions'>"; - echo "<label for='zap_sessions'> <b>Connexion unique</b> (sécurité)</font></label>\n"; - } echo "<div align='right'><input type='submit' class='fondl' name='submit' value='Valider'></div>\n"; //echo "</div>\n"; fin_cadre_relief(); echo "</form>"; + + if ($secu == 'oui') { + // y a-t-il d'anciennes sessions pour ce login ? Si oui proposer de les zapper + + debut_cadre_relief(); + + $zap_sessions = zap_sessions($login, false); + echo "<b>Options de sécurité</b><p>"; + echo "<font size='2' face='verdana,arial,helvetica,sans-serif'>"; + if ($zap_sessions) { + $redirect = './ecrire/login.php3?secu=oui'; + echo "<script type=\"text/javascript\" src=\"md5.js\"></script>"; + echo "<form action='../spip_cookie.php3' method='post'"; + echo " onSubmit='if (this.session_password.value) { + this.session_password_md5.value = calcMD5(\"$alea_actuel\" + this.session_password.value); + this.next_session_password_md5.value = calcMD5(\"$alea_futur\" + this.session_password.value); + this.session_password.value = \"\"; + }'"; + echo ">\n"; + + echo "<b>Une connexion à l'espace privé utilisant cet identifiant est en cours.</b>\n"; + echo "Si vous êtes en train d'utiliser un autre navigateur ou un autre ordinateur pour accéder à "; + echo "l'espace privé, cela est parfaitement normal. Si vous n'utilisez aucun autre logiciel de navigation <b>en ce moment</b>, "; + echo "vous pouvez tuer toutes les connexions en entrant votre mot de passe, cela renforcera la sécurité du système."; + + echo "<p>\n"; + + // si jaja actif, on affiche le login en 'dur', et on le passe en champ hidden + echo "<input type='hidden' name='session_login_hidden' value='$login'>"; + + // si jaja inactif, le login est modifiable (puisque le challenge n'est pas utilise) + echo "<noscript><label><b>Login (identifiant de connexion au site)</b><br></label>\n"; + echo "<input type='text' name='session_login' class='formo' value=\"$login\" size='40'></noscript>"; + + echo "<p>\n<label><b>Mot de passe</b><br></label>"; + echo "<input type='password' name='session_password' class='formo' value=\"\" size='40'><p>\n"; + echo "<input type='hidden' name='session_password_md5' value=''>\n"; + echo "<input type='hidden' name='next_session_password_md5' value=''>\n"; + + echo "<input type='hidden' name='essai_login' value='oui'>\n"; + echo "<input type='hidden' name='redirect' value='$redirect'>\n"; + echo "<input type='hidden' name='zap_sessions' value='oui'>\n"; + + echo "<div align='right'><input type='submit' class='fondl' name='submit' value='Terminer toutes les connexions'></div>\n"; + echo "</form>\n"; + } + else { + echo ("Aucune connexion à l'espace privé n'utilise actuellement cet identifiant."); + } + echo "</font>\n"; + + fin_cadre_relief(); + } } - else -{ // demander seulement le login + +else { + // demander seulement le login echo "<form action='./login.php3' method='get'>\n"; debut_cadre_enfonce(); //echo "<div style='border: 1px dashed #999999; padding: 10px;'>\n"; @@ -162,10 +206,12 @@ if ($echec_cookie == "oui" AND $php_module) { } +echo "<p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'>"; +echo "[<a href='login.php3?secu=oui'>options de sécurité</a>"; if ($url_site) { - echo "<p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'>"; - echo "[<a href='$url_site'>retour au site public</a>]</font>"; + echo " | <a href='$url_site'>retour au site public</a>"; } +echo "]</font>"; install_fin_html(); diff --git a/spip_cookie.php3 b/spip_cookie.php3 index 6811103d605bc5811289f12a45a341f8cfebe914..e431344359c5edcae977c4d9cdbc31de14fc4b19 100644 --- a/spip_cookie.php3 +++ b/spip_cookie.php3 @@ -70,23 +70,26 @@ else if ($essai_login == "oui") { $row_auteur['statut'] = '1comite'; } - if ($row_auteur['statut'] == '0minirezo') { // force le cookie pour les admins - $cookie_admin = "@".$row_auteur['login']; + if ($zap_sessions == 'oui') { + zap_sessions($row_auteur['login'], true); + } + else { + if ($row_auteur['statut'] == '0minirezo') { // force le cookie pour les admins + $cookie_admin = "@".$row_auteur['login']; + } + $cookie_session = creer_cookie_session($row_auteur); + setcookie('spip_session', $cookie_session, time() + 3600 * 24 * 7); + + // ici on fait tourner le codage du pass dans la base + // retournera une erreur si la base n'est pas mise a jour... + $nouvel_alea_futur = creer_uniqid(); + $query = "UPDATE spip_auteurs + SET alea_actuel = alea_futur, + pass = '$md5next', + alea_futur = '$nouvel_alea_futur' + WHERE login='$login'"; + @spip_query($query); } - if ($zap_sessions) zap_sessions($row_auteur['login'], true); - $cookie_session = creer_cookie_session($row_auteur); - setcookie('spip_session', $cookie_session, time() + 3600 * 24 * 7); - - - // ici on fait tourner le codage du pass dans la base - // retournera une erreur si la base n'est pas mise a jour... - $nouvel_alea_futur = creer_uniqid(); - $query = "UPDATE spip_auteurs - SET alea_actuel = alea_futur, - pass = '$md5next', - alea_futur = '$nouvel_alea_futur' - WHERE login='$login'"; - @spip_query($query); } else if ($redirect_echec) { @header("Location: $redirect_echec?login=$login&erreur=pass");