Skip to content
Extraits de code Groupes Projets
Valider 79b4625a rédigé par Fil's avatar Fil
Parcourir les fichiers

J'ai completement nettoye l'interface de zap_session : c'est au moment où on

a réussi à se loger qu'apparaît un gros warning impossible à manquer avec un
bouton proposant de zapper. La formulation elle-même peut être améliorée, mais
je pense que c'est la bonne logique d'interface.

Je bricole aussi un peu login.php3 de manière à éviter des redirects, et, à
terme, à pouvoir l'intégrer complètement dans inc_auth (ce qui permettra, en
particulier, de pouvoir se connecter sur une page donnée sans être contraint
de passer par index.php3... pas fini.)
parent 1d75b30a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -127,7 +127,8 @@ function auth() {
// Si pas authentifie, demander login / mdp
if (!$auth_login) {
@header("Location: ./login.php3");
// @header("Location: ./login.php3");
include('login.php3');
exit;
}
......
......@@ -1690,6 +1690,20 @@ function debut_droite() {
<td width=500 valign="top" rowspan=2>
<font face="Georgia,Garamond,Times,serif" size=3>
<?php
// proposer un zap_session le cas echeant lors d'un login reussi
if ($GLOBALS['spip_session'] && $GLOBALS['zap']=='oui' && zap_sessions($GLOBALS['auteur_session']['login'], false)) {
debut_cadre_enfonce();
echo propre('<img src="img_pack/warning.gif" align="left" hspace="5" vspace="5"> Attention: une autre connexion
&agrave; votre nom est en cours. Probablement est-ce parce que vous ne vous
&ecirc;tes pas d&eacute;connect&eacute; apr&egrave;s votre dernier passage,
ou parce que vous vous connectez simultan&eacute;ment avec deux navigateurs.
Si tel est le cas, cela ne pr&ecirc;te pas &agrave; cons&eacute;quence.
En cas de doute, toutefois, [cliquez sur ce texte pour supprimer
l\'autre session->../spip_cookie.php3?zap_session=oui&redirect=./ecrire/].');
fin_cadre_enfonce();
}
}
......
......@@ -159,9 +159,14 @@ function zap_sessions ($login, $zap) {
} else {
$dirname = "ecrire/data/";
}
// ne pas se zapper soi-meme
if ($s = $GLOBALS['spip_session'])
$fichier_session = fichier_session($s, lire_meta('alea_ephemere'));
$dir = opendir($dirname);
while(($item = readdir($dir)) != ''){
if (ereg("^session_[a-z0-9]+\.php3$", $item)) {
if (ereg("^session_([a-z0-9]+)\.php3$", $item, $regs) AND ($fichier_session != $item)) {
$session = file("$dirname$item");
if (ereg("GLOBALS\['auteur_session'\]\['login'\] = '$login'", $session[3])) {
if ($zap) {
......
......@@ -25,7 +25,7 @@ if ($erreur=='pass') $erreur = "Erreur de mot de passe.";
// Le login est memorise dans le cookie d'admin eventuel
if (!$login)
if (ereg("^@(.*)$", $spip_admin, $regs))
if (ereg("^@(.*)$", $HTTP_COOKIE_VARS['spip_admin'], $regs))
$login = $regs[1];
// quels sont les aleas a passer ?
......@@ -78,7 +78,7 @@ echo "<p>&nbsp;<p>";
if ($login) {
// affiche formulaire de login en incluant le javascript MD5
$redirect = './ecrire/index.php3?essai_cookie=oui';
$redirect = './ecrire/index.php3?essai_cookie=oui&zap=oui';
$redirect_echec = './ecrire/login.php3';
$dir = "../";
echo "<script type=\"text/javascript\" src=\"md5.js\"></script>";
......@@ -95,7 +95,7 @@ if ($login) {
} else if ($row['statut'] == '1comite') {
$icone = "redacteurs-24.gif";
}
debut_cadre_relief($icone);
debut_cadre_enfonce($icone);
if ($erreur) echo "<font color=red><b>$erreur</b></font><p>";
if (file_exists("../IMG/auton$id_auteur.gif")) $logo = "../IMG/auton$id_auteur.gif";
......@@ -132,61 +132,9 @@ if ($login) {
echo "</tr></table>";
echo "<div align='right'><input type='submit' class='fondl' name='submit' value='Valider'></div>\n";
//echo "</div>\n";
fin_cadre_relief();
fin_cadre_enfonce();
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&eacute;curit&eacute;</b><p>";
echo "<font size='2' face='verdana,arial,helvetica,sans-serif'>";
if ($zap_sessions) {
$redirect = "./ecrire/login.php3?secu=oui&login=$login";
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 &agrave; l'espace priv&eacute; utilisant cet identifiant est en cours.</b>\n";
echo "Si vous &ecirc;tes en train d'utiliser un autre navigateur ou un autre ordinateur pour acc&eacute;der &agrave; ";
echo "l'espace priv&eacute;, 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&eacute;curit&eacute; du syst&egrave;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&eacute; n'utilise actuellement cet identifiant.");
}
echo "</font>\n";
fin_cadre_relief();
}
}
else {
......@@ -208,7 +156,7 @@ if ($echec_cookie == "oui" AND $php_module) {
echo "<fieldset>\n";
echo "<p><b>Si vous pr&eacute;f&eacute;rez refuser les cookies</b>, une autre m&eacute;thode ";
echo "non s&eacute;curis&eacute;e est &agrave; votre disposition&nbsp;: \n";
echo "<input type='hidden' name='redirect' value='./ecrire/'>";
echo "<input type='hidden' name='redirect' value='./ecrire/index.php3?zap=oui'>";
echo "<input type='hidden' name='essai_auth_http' value='oui'> ";
echo "<div align='right'><input type='submit' name='submit' class='fondl' value='Identification sans cookie'></div>\n";
echo "</fieldset></form>\n";
......@@ -219,11 +167,7 @@ $link = new Link;
$link->addVar('secu', 'oui');
echo "<p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'>";
echo "[<a href='".$link->getUrl()."'>options de s&eacute;curit&eacute;</a>";
if ($url_site) {
echo " | <a href='$url_site'>retour au site public</a>";
}
echo "]</font>";
echo "[<a href='$url_site'>retour au site public</a>]</font>";
install_fin_html();
......
......@@ -23,10 +23,12 @@ else if ($essai_auth_http == 'logout') {
}
// rejoue le cookie pour renouveler spip_session
if ($change_session == "oui") {
if ($change_session == "oui" || zap_session == 'oui') {
if (verifier_session($spip_session)) {
$cookie = creer_cookie_session($auteur_session);
supprimer_session($spip_session);
if ($zap_session)
zap_sessions($auteur_session['login'], true);
// setcookie ('spip_session', $spip_session, time() - 24 * 7 * 3600);
setcookie('spip_session', $cookie);
@header('Content-Type: image/gif');
......@@ -70,26 +72,21 @@ else if ($essai_login == "oui") {
$row_auteur['statut'] = '1comite';
}
if ($zap_sessions == 'oui') {
zap_sessions($row_auteur['login'], true);
if ($row_auteur['statut'] == '0minirezo') { // force le cookie pour les admins
$cookie_admin = "@".$row_auteur['login'];
}
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);
$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);
}
// 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");
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter