get rid of lastlogin, lastnewlogin and host --> duplicate things with logger.session...
authorx2000habouzit <x2000habouzit>
Tue, 10 Aug 2004 08:57:55 +0000 (08:57 +0000)
committerx2000habouzit <x2000habouzit>
Tue, 10 Aug 2004 08:57:55 +0000 (08:57 +0000)
htdocs/admin/utilisateurs.php
htdocs/auth-groupex.php
include/xorg.session.inc.php
scripts/migration.sql

index a5db71e..6760f94 100644 (file)
@@ -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);
 
index a973c89..81b9500 100644 (file)
@@ -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 */
index e6a13b6..00e729e 100644 (file)
@@ -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);
index 48b6859..d358a30 100644 (file)
@@ -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";