From e1f6e27e96eb868e83f019c2ceb7c585651e00a9 Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Tue, 10 Aug 2004 08:57:55 +0000 Subject: [PATCH] get rid of lastlogin, lastnewlogin and host --> duplicate things with logger.session (Half-Closes: bug#14) --- htdocs/admin/utilisateurs.php | 2 +- htdocs/auth-groupex.php | 4 ++-- include/xorg.session.inc.php | 26 ++++++++++++++------------ scripts/migration.sql | 16 ++++++++++------ 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/htdocs/admin/utilisateurs.php b/htdocs/admin/utilisateurs.php index a5db71e..6760f94 100644 --- a/htdocs/admin/utilisateurs.php +++ b/htdocs/admin/utilisateurs.php @@ -298,7 +298,7 @@ if (!empty($_REQUEST['select'])) { $r=mysql_query("select * from auth_user_md5 where $looking_field='$login' order by username",$conn); if ($mr=mysql_fetch_assoc($r)){ if ($numeric_login) $login = $mr['username']; - $param=mysql_query("SELECT UNIX_TIMESTAMP(lastlogin) FROM auth_user_md5 WHERE username='$login'",$conn); + $param=mysql_query("SELECT UNIX_TIMESTAMP(MAX(start)) FROM logger.sessions WHERE uid={$mr['user_id']} AND suid=0 GROUP BY uid'",$conn); list($lastlogin) = mysql_fetch_row($param); mysql_free_result($param); diff --git a/htdocs/auth-groupex.php b/htdocs/auth-groupex.php index a973c89..81b9500 100644 --- a/htdocs/auth-groupex.php +++ b/htdocs/auth-groupex.php @@ -15,9 +15,9 @@ require("auto.prepend.inc.php"); new_skinned_page('index.tpl',AUTH_COOKIE); // mise à jour de l'heure et de la machine de dernier login sauf quand on est en suid -$newhost=strtolower(gethostbyaddr($_SERVER["REMOTE_ADDR"])); if (!isset($_SESSION['suid'])) { - $globals->db->query("UPDATE auth_user_md5 SET host='$newhost',lastlogin=NULL WHERE user_id=".$_SESSION['uid']); + $logger = (isset($_SESSION['log']) && $_SESSION['log']->uid==$uid) ? $_SESSION['log'] : new DiogenesCoreLogger($uid)); + $logger->log("connexion_auth_ext",$_SERVER['PHP_SELF']); } /* cree le champs "auth" renvoye au Groupe X */ diff --git a/include/xorg.session.inc.php b/include/xorg.session.inc.php index e6a13b6..00e729e 100644 --- a/include/xorg.session.inc.php +++ b/include/xorg.session.inc.php @@ -172,9 +172,19 @@ function try_cookie() { */ function start_connexion ($username, $uid, $identified) { global $globals; - $result=$globals->db->query("SELECT prenom, nom, perms, promo, UNIX_TIMESTAMP(lastnewslogin), UNIX_TIMESTAMP(lastlogin), host, matricule FROM auth_user_md5 WHERE user_id=$uid;"); - list($prenom, $nom, $perms, $promo, $lastnewslogin, $lastlogin, $host, $matricule) = mysql_fetch_row($result); + $result=$globals->db->query("SELECT prenom, nom, perms, promo, matricule, MAX(s.id), UNIX_TIMESTAMP(MAX(s.start)) AS lastlogin + FROM auth_user_md5 AS u + LEFT JOIN logger.sessions AS s ON(s.uid=u.user_id AND s.suid=0) + WHERE user_id=$uid + GROUP BY s.uid"); + list($prenom, $nom, $perms, $promo, $matricule, $s_id, $lastlogin) = mysql_fetch_row($result); mysql_free_result($result); + if($s_id) { + $res = $globals->db->query("SELECT host FROM logger.sessions WHERE id=$s_id LIMIT 1"); + list($host) = mysql_fetch_row($res); + mysql_free_result($res); + } else + $host=null; // on garde le logger si il existe (pour ne pas casser les sessions lors d'une // authentification avec le cookie // on vérifie que c'est bien un logger de l'utilisateur en question @@ -183,15 +193,8 @@ function start_connexion ($username, $uid, $identified) { // on vide la session pour effacer les valeurs précédentes (notamment de skin) // qui peuvent être celles de quelqu'un d'autre ou celle par defaut $_SESSION = array(); - if (!isset($_SESSION['suid'])) { - // mise à jour de la date de dernière connexion - // sauf lorsque l'on est en SUID - $newhost=strtolower(gethostbyaddr($_SERVER['REMOTE_ADDR'])); - $globals->db->query("UPDATE auth_user_md5 SET host='$newhost',lastlogin=NULL WHERE user_id=$uid;"); - $_SESSION['lastlogin'] = $lastlogin; - $_SESSION['host'] = $host; - } - // mise en place des variables de session + $_SESSION['lastlogin'] = $lastlogin; + $_SESSION['host'] = $host; $_SESSION['auth'] = ($identified ? AUTH_MDP : AUTH_COOKIE); $_SESSION['uid'] = $uid; $_SESSION['username'] = $username; @@ -199,7 +202,6 @@ function start_connexion ($username, $uid, $identified) { $_SESSION['nom'] = $nom; $_SESSION['perms'] = $perms; $_SESSION['promo'] = $promo; - $_SESSION['lastnewslogin'] = $lastnewslogin; $res = $globals->db->query("SELECT flags FROM identification WHERE matricule = '$matricule' AND FIND_IN_SET(flags, 'femme')"); $_SESSION['femme'] = mysql_num_rows($res) > 0; mysql_free_result($res); diff --git a/scripts/migration.sql b/scripts/migration.sql index 48b6859..d358a30 100644 --- a/scripts/migration.sql +++ b/scripts/migration.sql @@ -5,18 +5,22 @@ ALTER TABLE `logger.sessions` ADD `sauth` ENUM( 'native' ) DEFAULT 'native' NOT -- gestion des skins ALTER TABLE `x4dat.skins` ADD COLUMN `skin_tpl` VARCHAR(32) AFTER `id`; - -- modifs diogenes/logger USE logger; ALTER TABLE `events` DROP `id` ; ALTER TABLE `sessions` ADD INDEX ( `uid` ); ALTER TABLE `sessions` ADD INDEX ( `uid` ); ALTER TABLE `events` ADD INDEX ( `session` ); -USE diogenes; -ALTER TABLE `diogenes_logevents` DROP `id` ; -ALTER TABLE `diogenes_logsessions` ADD INDEX ( `uid` ); -ALTER TABLE `diogenes_logsessions` ADD INDEX ( `start` ); -ALTER TABLE `diogenes_logevents` ADD INDEX ( `session` ); -- optim trackers drop trackers; + +-- +-- X4DAT +-- + +-- lastlogin --> logger +ALTER TABLE x4dat.auth_user_md5 DROP COLUMN lastnewslogin; +ALTER TABLE x4dat.auth_user_md5 DROP COLUMN lastlogin; +ALTER TABLE x4dat.auth_user_md5 DROP COLUMN host; +INSERT INTO logger.actions SET text="connexion_auth_ext",description="connection via l'auth des groupes X"; -- 2.1.4