From: x2003bruneau Date: Fri, 10 Nov 2006 14:06:25 +0000 (+0000) Subject: #536: Can use login.promo to identify a user X-Git-Tag: xorg/0.9.12~127 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=3ab288a68f84bed88d2d415cb3d761ed5d1c825c;p=platal.git #536: Can use login.promo to identify a user git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1070 839d8a87-29fc-0310-9880-83ba4fa771e5 --- diff --git a/ChangeLog b/ChangeLog index 424ae23..85d6d35 100644 --- a/ChangeLog +++ b/ChangeLog @@ -43,6 +43,7 @@ Bug/Wish: * Profile: - #451: vCard are RFC compliant -FRU - #502: Use 'alias' instead of 'aka' to specify the nickname -FRU + - #536: Can use login.promo as a valid user identifier -FRU * Xnet: - #511: Migrate ML subscription when changing email of a non-X -FRU diff --git a/include/user.func.inc.php b/include/user.func.inc.php index c74e087..4f7a40a 100644 --- a/include/user.func.inc.php +++ b/include/user.func.inc.php @@ -68,7 +68,7 @@ function user_clear_all_subs($user_id, $really_del=true) function get_user_login($data, $get_forlife = false) { global $globals, $page; - if (preg_match(',^[0-9]*$,', $data)) { + if (is_numeric($data)) { $res = XDB::query("SELECT alias FROM aliases WHERE type='a_vie' AND id={?}", $data); if ($res->numRows()) { return $res->fetchOneCell(); @@ -88,22 +88,32 @@ function get_user_login($data, $get_forlife = false) { if ($fqdn == $globals->mail->domain || $fqdn == $globals->mail->domain2) { $res = XDB::query("SELECT a.alias - FROM aliases AS a - INNER JOIN aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?}) - WHERE a.type = 'a_vie'", $mbox); + FROM aliases AS a + INNER JOIN aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?}) + WHERE a.type = 'a_vie'", $mbox); if ($res->numRows()) { return $get_forlife ? $res->fetchOneCell() : $mbox; - } else { - $page->trig("il n'y a pas d'utilisateur avec ce login"); - return false; } + if (preg_match('/^(.*)\.([0-9]{4})$/', $mbox, $matches)) { + $res = XDB::query("SELECT a.alias + FROM aliases AS a + INNER JOIN aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?}) + INNER JOIN auth_user_md5 AS u ON (a.id = u.user_id AND promo = {?}) + WHERE a.type = 'a_vie'", $matches[1], $matches[2]); + if ($res->numRows() == 1) { + return $res->fetchOneCell(); + } + } + $page->trig("il n'y a pas d'utilisateur avec ce login"); + return false; + } elseif ($fqdn == $globals->mail->alias_dom || $fqdn == $globals->mail->alias_dom2) { $res = XDB::query("SELECT redirect - FROM virtual_redirect - INNER JOIN virtual USING(vid) - WHERE alias={?}", $mbox.'@'.$globals->mail->alias_dom); + FROM virtual_redirect + INNER JOIN virtual USING(vid) + WHERE alias={?}", $mbox.'@'.$globals->mail->alias_dom); if ($redir = $res->fetchOneCell()) { list($alias) = explode('@', $redir); } else {