Allow login of 'ax' accounts.
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 16 Sep 2010 14:49:10 +0000 (16:49 +0200)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 16 Sep 2010 14:49:10 +0000 (16:49 +0200)
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
classes/xorgsession.php
templates/admin/user.tpl
templates/core/password_prompt.tpl

index 02e34e4..a6ed341 100644 (file)
@@ -79,11 +79,18 @@ class XorgSession extends PlSession
 
     private function checkPassword($uname, $login, $response, $login_type)
     {
-        $res = XDB::query('SELECT  a.uid, a.password
-                             FROM  accounts AS a
-                       INNER JOIN  aliases  AS l ON (l.uid = a.uid AND l.type != \'homonyme\')
-                            WHERE  l.' . $login_type . ' = {?} AND a.state = \'active\'',
-                          $login);
+        if ($login_type == 'alias') {
+            $res = XDB::query('SELECT  a.uid, a.password
+                                 FROM  accounts AS a
+                           INNER JOIN  aliases  AS l ON (l.uid = a.uid AND l.type != \'homonyme\')
+                                WHERE  l.alias = {?} AND a.state = \'active\'',
+                              $login);
+        } else {
+            $res = XDB::query('SELECT  uid, password
+                                 FROM  accounts
+                                WHERE  ' . $login_type . ' = {?}',
+                              $login);
+        }
         if (list($uid, $password) = $res->fetchOneRow()) {
             $expected_response = sha1("$uname:$password:" . S::v('challenge'));
             /* Deprecates len(password) > 10 conversion. */
@@ -132,10 +139,11 @@ class XorgSession extends PlSession
          */
         if (S::suid()) {
             $login = $uname = S::suid('uid');
+            $loginType = 'uid';
             $redirect = false;
         } else {
-            $uname = Env::v('username');
-            if (Env::v('domain') == "alias") {
+            $uname = Post::v('username');
+            if (Post::s('domain') == "alias") {
                 $res = XDB::query('SELECT  redirect
                                      FROM  virtual
                                INNER JOIN  virtual_redirect USING(vid)
@@ -147,13 +155,19 @@ class XorgSession extends PlSession
                 } else {
                     $login = '';
                 }
+                $loginType = 'alias';
+            } else if (Post::s('domain') == "ax") {
+                $login = $uname;
+                $redirect = false;
+                $loginType = 'hruid';
             } else {
                 $login = $uname;
                 $redirect = false;
+                $loginType = 'alias';
             }
         }
 
-        $uid = $this->checkPassword($uname, $login, Post::v('response'), (!$redirect && is_numeric($uname)) ? 'uid' : 'alias');
+        $uid = $this->checkPassword($uname, $login, Post::v('response'), $loginType);
         if (!is_null($uid) && S::suid()) {
             if (S::suid('uid') == $uid) {
                 $uid = S::i('uid');
@@ -165,8 +179,11 @@ class XorgSession extends PlSession
             S::set('auth', AUTH_MDP);
             if (!S::suid()) {
                 if (Post::has('domain')) {
-                    if (($domain = Post::v('domain', 'login')) == 'alias') {
+                    $domain = Post::v('domain', 'login');
+                    if ($domain == 'alias') {
                         Cookie::set('domain', 'alias', 300);
+                    } else if ($domain == 'ax') {
+                        Cookie::set('domain', 'ax', 300);
                     } else {
                         Cookie::kill('domain');
                     }
index a5a790a..d18dca1 100644 (file)
@@ -120,11 +120,15 @@ $(document).ready(function() {
       </th>
     </tr>
     <tr>
-      <td class="titre">Nom complet</td>
+      <td class="titre">Nom complet<br />
+        <span class="smaller">Prénom NOM</span>
+      </br></td>
       <td>{if $hasProfile}{$user->fullName()}{else}<input type="text" name="full_name" maxlength="255" value="{$user->fullName()}" />{/if}</td>
     </tr>
     <tr>
-      <td class="titre">Nom annuaire</td>
+      <td class="titre">Nom annuaire<br />
+        <span class="smaller">NOM Prénom</span>
+      </td>
       <td>{if $hasProfile}{$user->directoryName()}{else}<input type="text" name="directory_name" maxlength="255" value="{$user->directoryName()}" />{/if}</td>
     </tr>
     <tr>
index ddb4981..f5b7bdc 100644 (file)
     </tr>
     <tr style="white-space: nowrap">
       <td class="titre">
-        Adresse email&nbsp;:
+        Identifiant&nbsp;:
       </td>
       <td>
-        <input type="text" name="username" size="20" maxlength="50" value="{insert name="getUserName"}" />&nbsp;@&nbsp;<select name="domain">
-          <option value="login">{#globals.mail.domain#} / {#globals.mail.domain2#}</option>
+        <input type="text" name="username" size="20" maxlength="50" value="{insert name="getUserName"}" />
+        <select name="domain">
+          <option value="login">@ {#globals.mail.domain#} / {#globals.mail.domain2#}</option>
           <option value="alias" {if t($smarty.cookies.ORGdomain) eq "alias"}selected="selected"{/if}>
-            {#globals.mail.alias_dom#} / {#globals.mail.alias_dom2#}
+            @ {#globals.mail.alias_dom#} / {#globals.mail.alias_dom2#}
+          </option>
+          <option value="ax" {if t($smarty.cookies.ORGdomain) eq "ax"}selected="selected"{/if}>
+            Identifiant
           </option>
         </select>
       </td>