$session =& Session::getMixed('session');
}
- if (Env::has('username') && Env::has('response') && isset($session->challenge))
+ if (Env::has('domain')) {
+ if (($domain = Env::get('domain', 'login')) == 'alias') {
+ setcookie('ORGdomain', "alias", (time()+25920000), '/', '', 0);
+ } else {
+ setcookie('ORGdomain', '', (time()-3600), '/', '', 0);
+ }
+ // pour que la modification soit effective dans le reste de la page
+ $_COOKIE['ORGdomain'] = $domain;
+ }
+
+ if (Env::has('username') && Env::has('response') && isset($session->challenge))
{
// si on vient de recevoir une identification par passwordpromptscreen.tpl
// ou passwordpromptscreenlogged.tpl
$uname = Env::get('username');
- $field = preg_match('/^\d*$/', $uname) ? 'id' : 'alias';
+
+ if ($domain == "alias") {
+
+ $res = $globals->xdb->query(
+ "SELECT redirect
+ FROM virtual
+ INNER JOIN virtual_redirect USING(vid)
+ WHERE alias LIKE {?}", $uname."@".$globals->mail->alias_dom);
+ $redirect = $res->fetchOneCell();
+ if ($redirect) {
+ $login = substr($redirect, 0, strpos($redirect, '@'));
+ } else {
+ $login = "";
+ }
+ } else {
+ $login = $uname;
+ }
+
+ $field = (!$redirect && preg_match('/^\d*$/', $uname)) ? 'id' : 'alias';
$res = $globals->xdb->query(
"SELECT u.user_id, u.password
FROM auth_user_md5 AS u
INNER JOIN aliases AS a ON ( a.id=u.user_id AND type!='homonyme' )
- WHERE a.$field = {?} AND u.perms IN('admin','user')", $uname);
+ WHERE a.$field = {?} AND u.perms IN('admin','user')", $login);
$logger =& Session::getMixed('log');
$page->changeTpl('password_prompt.tpl');
$page->addJsLink('javascript/do_challenge_response.js');
$page->assign("xorg_tpl", "password_prompt.tpl");
+
+ global $globals;
+ if ($globals->mail->alias_dom) {
+ $page->assign("domains", Array(
+ $globals->mail->domain."/".$globals->mail->domain2,
+ $globals->mail->alias_dom."/".$globals->mail->alias_dom2));
+ $page->assign("domains_value", Array("login", "alias"));
+ $page->assign("r_domain", Cookie::get('ORGdomain', 'login'));
+ }
$page->run();
}
exit;
function getUsername($auth,$uid)
{
global $globals;
- $res = $globals->xdb->query("SELECT alias FROM aliases WHERE id = {?} AND type='a_vie'", $uid);
+ $res = $globals->xdb->query("SELECT alias FROM aliases WHERE id = {?} AND type='a_vie'", $uid);
return $res->fetchOneCell();
}
return "";
}
- $res = $globals->xdb->query("SELECT alias FROM aliases
- WHERE id={?} AND (type IN ('a_vie','alias') AND FIND_IN_SET('bestalias', flags))", $id);
- return $res->fetchOneCell();
+ if (Cookie::get('ORGdomain', 'login') != 'alias') {
+ $res = $globals->xdb->query("SELECT alias FROM aliases
+ WHERE id={?} AND (type IN ('a_vie','alias') AND FIND_IN_SET('bestalias', flags))", $id);
+ return $res->fetchOneCell();
+ } else {
+ $res = $globals->xdb->query("
+ SELECT v.alias
+ FROM virtual AS v
+ INNER JOIN virtual_redirect USING(vid)
+ INNER JOIN aliases AS a ON(id={?} AND a.type='a_vie')
+ WHERE redirect = CONCAT(a.alias, {?})
+ OR redirect = CONCAT(a.alias, {?})",
+ $id, "@".$globals->mail->domain, "@".$globals->mail->domain2);
+ $alias = $res->fetchOneCell();
+ return substr($alias, 0, strpos($alias, "@"));
+ }
+
+ return $login;
+
}
?>
<tr>
<th colspan="2">Connexion</th>
</tr>
- <tr>
+ <tr style="white-space: nowrap">
<td class="titre">
+ {if $domains}
+ Adresse email :
+ {else}
Login (prenom.nom) :
+ {/if}
</td>
<td>
<input type="text" name="username" size="20" maxlength="50"
value="{insert name="getUserName"}" />
+ {if $domains}
+ @
+ <select name="domain">
+ {html_options values=$domains_value output=$domains selected=$r_domain}
+ </select>
+ {/if}
</td>
</tr>
<tr>
</td>
</tr>
<tr>
+ <td colspan="2">
+ <table width="100%"><tr>
<td>
<img src="{rel}/images/pi.png" alt=" [ ? ] " />
<a href="{rel}/recovery.php">mot de passe perdu ?</a>
<td class="right">
<input type="submit" name="submitbtn" value="Envoyer" />
</td>
+ </tr></table>
+ </td>
</tr>
</table>
</form>
<input type="hidden" name="response" value="" />
<input type="hidden" name="username" value="" />
<input type="hidden" name="remember" value="" />
+ <input type="hidden" name="domain" value="" />
</div>
</form>