git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-69
--- /dev/null
+<?php
+require_once("__init__.php");
+require_once("xorg.globals.inc.php");
+XorgGlobals::init();
+
+require_once('include/user.func.inc.php');
+
+class TestOfXOrgUsers extends UnitTestCase {
+ function TestOfXOrgUsers() {
+ $this->UnitTestCase('XOrg Users Test');
+ }
+
+ function test_get_user_login() {
+ global $page;
+
+ $login = get_user_login(18742);
+ $this->assertIdentical($login, 'pierre.habouzit.2000');
+
+ $login = get_user_login(100000000);
+ $this->assertIdentical($login, false);
+
+
+ $login = get_user_login("madcoder@melix.org");
+ $this->assertIdentical($login, 'pierre.habouzit.2000');
+
+ $login = get_user_login("madcoder@melix.net");
+ $this->assertIdentical($login, 'pierre.habouzit.2000');
+
+
+ $login = get_user_login("madcoder@polytechnique.org");
+ $this->assertIdentical($login, 'madcoder');
+
+ $login = get_user_login("madcoder@m4x.org");
+ $this->assertIdentical($login, 'madcoder');
+
+
+ $login = get_user_login("pierre.habouzit.2000");
+ $this->assertIdentical($login, 'pierre.habouzit.2000');
+
+ $login = get_user_login("pierre.habouzit.2001");
+ $this->assertIdentical($login, false);
+
+
+ $login = get_user_login("madcoder@olympe.madism.org");
+ $this->assertIdentical($login, 'pierre.habouzit.2000');
+
+ unset($page);
+ }
+}
+
+$test = &new TestOfXOrgUsers();
+$test->run(new HtmlReporter());
+?>
require_once("xorg.inc.php");
new_admin_page('admin/utilisateurs.tpl');
require_once("emails.inc.php");
+require_once("user.func.inc.php");
/*
* Already in SUID ?
$page->kill("déjà en SUID !!!");
}
+$login = isset($_REQUEST['login']) ? get_user_login($_REQUEST['login']) : false;
+
+
/*
* LOGS de l'utilisateur
*/
-if(isset($_REQUEST['logs_button'])) {
- header("Location: logger.php?loguser={$_REQUEST['login']}&year=".date('Y')."&month=".date('m'));
+if(isset($_REQUEST['logs_button']) && $login) {
+ header("Location: logger.php?loguser=$login&year=".date('Y')."&month=".date('m'));
}
/*
* SUID
*/
-if(isset($_REQUEST['suid_button']) and isset($_REQUEST['login']) and !isset($_SESSION['suid'])) {
- $log_data = $_REQUEST['login']." by ".$_SESSION['forlife'];
+if(isset($_REQUEST['suid_button']) and $login and !isset($_SESSION['suid'])) {
+ $log_data = "login by ".$_SESSION['forlife'];
$_SESSION['log']->log("suid_start",$log_data);
$_SESSION['suid'] = $_SESSION;
- $r=$globals->db->query("SELECT id FROM aliases WHERE alias='{$_REQUEST['login']}'");
+ $r=$globals->db->query("SELECT id FROM aliases WHERE alias='$login'");
if(list($uid) = mysql_fetch_row($r)) {
start_connexion($uid,true);
header("Location: ../");
* LE RESTE
*/
-if (!empty($_REQUEST['login'])) {
- $needle = strtolower($_REQUEST['login']);
-
- if (strstr($needle, '@')!==false) {
- list($mbox, $fqdn) = split('@', $needle);
- if ($fqdn=='polytechnique.org' || $fqdn=='m4x.org') {
- $login = $mbox;
- } elseif ($fqdn =='melix.net' || $fqdn=='melix.org') {
- $res = $globals->db->query("SELECT redirect
- FROM virtual_redirect
- INNER JOIN virtual USING(vid)
- WHERE alias='$mbox@melix.net'");
- if (list($redir) = mysql_fetch_row($res)) {
- list($login) = split('@', $redir);
- } else {
- $page->trig("il n'y a pas d'utilisateur avec cet alias melix");
- }
- mysql_free_result($res);
- } else {
- $res = $globals->db->query("SELECT alias
- FROM aliases AS a
- INNER JOIN emails AS e ON e.uid=a.id
- WHERE e.email='$needle' AND a.type='a_vie'");
- if (($i=mysql_num_rows($res))!=1) {
- if ($i) {
- $aliases = Array();
- while (list($a) = mysql_fetch_row($res)) $aliases[] = $a;
- $page->trig("Il y a $i utilisateurs avec cette adresse mail : ".join(', ', $aliases));
- } else {
- $page->trig("il n'y a pas d'utilisateur avec cette adresse mail");
- }
- } else {
- list($login) = mysql_fetch_row($res);
- }
- mysql_free_result($res);
- }
+if ($login) {
+ $r=$globals->db->query("SELECT *
+ FROM auth_user_md5 AS u
+ INNER JOIN aliases AS a ON ( a.id = u.user_id AND a.alias='$login' AND type!='homonyme' )");
+ if ($tmp = mysql_fetch_assoc($r)) {
+ $mr =& $tmp;
} else {
- $login = $needle;
- }
-
- if (!empty($login)) {
- $r=$globals->db->query("SELECT *
- FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON ( a.id = u.user_id AND a.alias='$login' AND type!='homonyme' )");
- if ($tmp = mysql_fetch_assoc($r)) {
- $mr =& $tmp;
- } else {
- $page->trig("il n'y a pas d'utilisateur avec ce login (ou alors il a des homonymes)");
- }
- mysql_free_result($r);
+ $page->trig("il n'y a pas d'utilisateur avec ce login (ou alors il a des homonymes)");
}
+ mysql_free_result($r);
}
if (!empty($_REQUEST['user_id'])) {
}
// }}}
+// {{{ function get_user_login()
+function get_user_login($data) {
+ global $globals, $page;
+
+ if (preg_match(',^[0-9]*$,', $data)) {
+ $res = $globals->db->query("SELECT alias FROM aliases WHERE type='a_vie' AND id=$data");
+ if (!mysql_num_rows($res)) {
+ $alias = false;
+ } else {
+ list($alias) = mysql_fetch_row($res);
+ }
+ mysql_free_result($res);
+ return $alias;
+ }
+
+ $data = trim(strtolower($data));
+
+ if (strstr($data, '@')===false) {
+ $data = $data.'@'.$globals->mail->domain;
+ }
+
+ list($mbox, $fqdn) = split('@', $data);
+ if ($fqdn == $globals->mail->domain || $fqdn == $globals->mail->domain2) {
+
+ $res = $globals->db->query("SELECT COUNT(alias) FROM aliases WHERE alias='$mbox' AND type IN ('alias', 'a_vie')");
+ list($c) = mysql_fetch_row($res);
+ mysql_free_result($res);
+ if (!$c && $page) {
+ $page->trig("il n'y a pas d'utilisateur avec ce login");
+ }
+ return $c ? $mbox : false;
+
+ } elseif ($fqdn == $globals->mail->alias_dom || $fqdn == $globals->mail->alias_dom2) {
+
+ $res = $globals->db->query("SELECT redirect
+ FROM virtual_redirect
+ INNER JOIN virtual USING(vid)
+ WHERE alias='$mbox@{$globals->mail->alias_dom}'");
+ if (list($redir) = mysql_fetch_row($res)) {
+ list($alias) = split('@', $redir);
+ } else {
+ $page->trig("il n'y a pas d'utilisateur avec cet alias");
+ $alias = false;
+ }
+ mysql_free_result($res);
+ return $alias;
+
+ } else {
+
+ $res = $globals->db->query("SELECT alias
+ FROM aliases AS a
+ INNER JOIN emails AS e ON e.uid=a.id
+ WHERE e.email='$data' AND a.type='a_vie'");
+ switch ($i = mysql_num_rows($res)) {
+ case 0:
+ $page->trig("il n'y a pas d'utilisateur avec cette addresse mail");
+ $alias = false;
+ break;
+
+ case 1:
+ list($alias) = mysql_fetch_row($res);
+ break;
+
+ default:
+ $alias = false;
+ if (has_perms()) {
+ $aliases = Array();
+ while (list($a) = mysql_fetch_row($res)) $aliases[] = $a;
+ $page->trig("Il y a $i utilisateurs avec cette adresse mail : ".join(', ', $aliases));
+ }
+ }
+ mysql_free_result($res);
+ return $alias;
+ }
+}
+
+// }}}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
?>
***************************************************************************}
+{dynamic}
{if $success}
- {dynamic}
<p>
a demande de création des alias <strong>{$success}@{#globals.mail.alias_dom#}</strong> et
<strong>{$success}@{#globals.mail.alias_dom2#}</strong> a bien été enregistrée. Après
<p>
Encore merci de nous faire confiance pour tes e-mails !
</p>
- {/dynamic}
{else}
<h1>
Adresses e-mail personnalisées
sans doute à toutes tes questions
</p>
- {dynamic}
{if $actuel}
<p>
<strong>Note : tu as déjà l'alias {$actuel}, or tu ne peux avoir qu'un seul alias à la fois.
</tr>
</table>
</form>
- {/dynamic}
{/if}
+{/dynamic}
{* vim:set et sw=2 sts=2 sws=2: *}