Merge commit 'origin/fusionax' into account
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Sun, 21 Dec 2008 17:37:02 +0000 (18:37 +0100)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Sun, 21 Dec 2008 17:37:02 +0000 (18:37 +0100)
Conflicts:

modules/platal.php
modules/register.php

Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
1  2 
classes/xorgsession.php
modules/platal.php
modules/register.php
modules/register/register.inc.php

diff --combined classes/xorgsession.php
@@@ -37,7 -37,7 +37,7 @@@ class XorgSession extends PlSessio
              }
          }
          if ((check_ip('dangerous') && S::has('uid')) || check_account()) {
-             $_SESSION['log']->log("view_page", $_SERVER['REQUEST_URI']);
+             S::logger()->log("view_page", $_SERVER['REQUEST_URI']);
          }
          return true;
      }
              return -1;
          }
  
 -        $res = XDB::query('SELECT  user_id, password
 -                             FROM  auth_user_md5
 -                            WHERE  user_id = {?} AND perms IN(\'admin\', \'user\')',
 +        $res = XDB::query('SELECT  uid, password
 +                             FROM  accounts
 +                            WHERE  uid = {?} AND state = \'active\'',
                           Cookie::i('ORGuid'));
          if ($res->numRows() != 0) {
              list($uid, $password) = $res->fetchOneRow();
 -            require_once 'secure_hash.inc.php';
 -            $expected_value = hash_encrypt($password);
 +            $expected_value = sha1($password);
              if ($expected_value == Cookie::v('ORGaccess')) {
                  S::set('auth_by_cookie', $uid);
                  return 0;
  
      private function checkPassword($uname, $login, $response, $login_type)
      {
 -        $res = 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.' . $login_type . ' = {?} AND u.perms IN(\'admin\', \'user\')',
 +        $res = XDB::query('SELECT  a.uid, a.password
 +                             FROM  accounts AS a
 +                       INNER JOIN  aliases  AS l ON (l.id = a.uid AND l.type != \'homonyme\')
 +                            WHERE  l.' . $login_type . ' = {?} AND a.state = \'active\'',
                            $login);
          if (list($uid, $password) = $res->fetchOneRow()) {
 -            require_once 'secure_hash.inc.php';
 -            $expected_response = hash_encrypt("$uname:$password:" . S::v('challenge'));
 -            if ($response != $expected_response && Env::has('xorpass')
 -                && !preg_match('/^0*$/', Env::v('xorpass'))) {
 -                $new_password = hash_xor(Env::v('xorpass'), $password);
 -                $expected_response = hash_encrypt("$uname:$new_password:" . S::v('challenge'));
 -                if ($response == $expected_response) {
 -                    XDB::execute('UPDATE  auth_user_md5
 -                                     SET  password = {?}
 -                                   WHERE  user_id = {?}',
 -                                 $new_password, $uid);
 -
 -                    // Update the GoogleApps password as well, if required.
 -                    global $globals;
 -                    if ($globals->mailstorage->googleapps_domain) {
 -                        require_once 'googleapps.inc.php';
 -                        $user = User::getSilent($uid);
 -                        $account = new GoogleAppsAccount($user);
 -                        if ($account->active() && $account->sync_password) {
 -                            $account->set_password($new_password);
 -                        }
 -                    }
 -                }
 -            }
 +            $expected_response = sha1("$uname:$password:" . S::v('challenge'));
 +            /* XXX: Deprecates len(password) > 10 conversion */
              if ($response != $expected_response) {
                  S::logger($uid)->log('auth_fail', 'bad password');
                  return null;
          }
          if ($level == AUTH_SUID) {
              S::set('auth', AUTH_MDP);
+             unset($_SESSION['log']);
          }
-         unset($_SESSION['log']);
  
          // Retrieves main user properties.
 -        $res  = XDB::query("SELECT  u.user_id AS uid, u.hruid, prenom, prenom_ini, nom, nom_ini, nom_usage, perms, promo, promo_sortie,
 -                                    matricule, password, FIND_IN_SET('femme', u.flags) AS femme,
 -                                    q.core_mail_fmt AS mail_fmt, UNIX_TIMESTAMP(q.banana_last) AS banana_last, q.watch_last, q.core_rss_hash,
 -                                    FIND_IN_SET('watch', u.flags) AS watch_account, q.last_version, g.g_account_name IS NOT NULL AS googleapps,
 -                                    UNIX_TIMESTAMP(s.start) AS lastlogin, s.host
 -                              FROM  auth_user_md5   AS u
 -                        INNER JOIN  auth_user_quick AS q  USING(user_id)
 -                         LEFT JOIN  gapps_accounts  AS g  ON (u.user_id = g.l_userid AND g.g_status = 'active')
 -                         LEFT JOIN  logger.last_sessions AS ls ON (ls.uid = u.user_id)
 +        /** TODO: Move needed informations to account tables */
 +        /** TODO: Currently suppressed data are matricule, promo */
 +        /** TODO: Data to move are: banana_last, watch_last, last_version */
 +        /** TODO: Switch to new permission system */
 +        $res  = XDB::query("SELECT  a.uid, a.hruid, a.display_name, a.full_name, a.password,
 +                                    a.sex = 'female' AS femme, a.mail_format as mail_fmt,
 +                                    a.token, FIND_IN_SET('watch', a.flags) AS watch_account,
 +                                    UNIX_TIMESTAMP(q.banana_last) AS banana_last, q.watch_last,
 +                                    q.last_version, g.g_account_name IS NOT NULL AS googleapps,
 +                                    UNIX_TIMESTAMP(s.start) AS lastlogin, s.host,
 +                                    IF(a.is_admin, 'admin', 'user') AS perms
 +                              FROM  accounts        AS a
 +                        INNER JOIN  auth_user_quick AS q  ON(a.uid = q.user_id)
 +                         LEFT JOIN  gapps_accounts  AS g  ON(a.uid = g.l_userid AND g.g_status = 'active')
 +                         LEFT JOIN  logger.last_sessions AS ls ON (ls.uid = a.uid)
                           LEFT JOIN  logger.sessions AS s  ON(s.id = ls.id)
 -                             WHERE  u.user_id = {?} AND u.perms IN('admin', 'user')", $uid);
 +                             WHERE  a.uid = {?} AND a.state = 'active'", $uid);
          $sess = $res->fetchOneAssoc();
          $perms = $sess['perms'];
          unset($sess['perms']);
              setcookie('ORGuid', $uid, (time() + 25920000), '/', '', 0);
  
              if (S::i('auth_by_cookie') == $uid || Post::v('remember', 'false') == 'true') {
 -                $cookie = hash_encrypt($sess['password']);
 +                $cookie = sha1($sess['password']);
                  setcookie('ORGaccess', $cookie, (time() + 25920000), '/', '', 0);
-                 if ($logger && S::i('auth_by_cookie') != $uid) {
+                 if (S::i('auth_by_cookie') != $uid) {
                      $logger->log("cookie_on");
                  }
              } else {
                  setcookie('ORGaccess', '', time() - 3600, '/', '', 0);
-                 if ($logger) {
-                     $logger->log("cookie_off");
-                 }
+                 $logger->log("cookie_off");
              }
          }
  
  
      public function tokenAuth($login, $token)
      {
 -        $res = XDB::query('SELECT  u.hruid
 -                             FROM  aliases         AS a
 -                       INNER JOIN  auth_user_md5   AS u ON (a.id = u.user_id AND u.perms IN ("admin", "user"))
 -                       INNER JOIN  auth_user_quick AS q ON (a.id = q.user_id AND q.core_rss_hash = {?})
 -                            WHERE  a.alias = {?} AND a.type != "homonyme"', $token, $login);
 +        $res = XDB::query('SELECT  a.hruid
 +                             FROM  aliases  AS l
 +                       INNER JOIN  accounts AS a ON (l.id = a.uid AND a.state = \'active\')
 +                            WHERE  a.token = {?} AND l.alias = {?} AND l.type != \'homonyme\'',
 +                           $token, $login);
          if ($res->numRows() == 1) {
              $data = $res->fetchOneAssoc();
              return new User($data['hruid'], $data);
      {
          if (S::logged() && (!S::has('skin') || S::has('suid'))) {
              $uid = S::v('uid');
 -            $res = XDB::query("SELECT  skin_tpl
 -                                 FROM  auth_user_quick AS a
 -                           INNER JOIN  skins           AS s ON a.skin = s.id
 -                                WHERE  user_id = {?} AND skin_tpl != ''", $uid);
 +            $res = XDB::query('SELECT  skin_tpl
 +                                 FROM  accounts AS a
 +                           INNER JOIN  skins    AS s on (a.skin = s.id)
 +                                WHERE  a.uid = {?} AND skin_tpl != \'\'', S::i('uid'));
              S::set('skin', $res->fetchOneCell());
          }
      }
diff --combined modules/platal.php
@@@ -209,6 -209,7 +209,6 @@@ class PlatalModule extends PLModul
          global $globals;
  
          if (Post::has('response2'))  {
 -            require_once 'secure_hash.inc.php';
              S::assert_xsrf_token();
  
              $_SESSION['password'] = $password = Post::v('response2');
              S::logger()->log('passwd', '');
  
              if (Cookie::v('ORGaccess')) {
 -                setcookie('ORGaccess', hash_encrypt($password), (time()+25920000), '/', '' ,0);
 +                setcookie('ORGaccess', sha1($password), (time()+25920000), '/', '' ,0);
+                 S::logger()->log('cookie_on', '');
              }
  
              $page->changeTpl('platal/motdepasse.success.tpl');
@@@ -355,8 -357,7 +356,7 @@@ Adresse de secours : " . Post::v('email
              $mymail->send();
  
              // on cree un objet logger et on log l'evenement
-             $logger = $_SESSION['log'] = new PlLogger($uid);
-             S::logger()->log('recovery', $mails);
+             S::logger(uid)->log('recovery', $mails);
          } else {
              $page->trigError('Les informations que tu as rentrées ne permettent pas de récupérer ton mot de passe.<br />'.
                          'Si tu as un homonyme, utilise prenom.nom.promo comme login');
                  }
              }
  
-             $logger = new PlLogger($uid);
-             S::logger()->log("passwd","");
+             S::logger($uid)->log("passwd", "");
              $page->changeTpl('platal/tmpPWD.success.tpl');
          } else {
              $page->changeTpl('platal/motdepasse.tpl');
          if ($level == 'forget' || $level == 'forgetall') {
              setcookie('ORGaccess', '', time() - 3600, '/', '', 0);
              Cookie::kill('ORGaccess');
-             if (isset($_SESSION['log']))
-                 S::logger()->log("cookie_off");
+             S::logger()->log("cookie_off");
          }
  
          if ($level == 'forgetuid' || $level == 'forgetall') {
              Cookie::kill('ORGdomain');
          }
  
-         if (isset($_SESSION['log'])) {
-             $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
-             S::logger()->log('deconnexion',$ref);
-         }
+         $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
+         S::logger()->log('deconnexion',$ref);
          Platal::session()->destroy();
  
          if (Get::has('redirect')) {
diff --combined modules/register.php
@@@ -444,7 -444,9 +444,8 @@@ class RegisterModule extends PLModul
              S::logger()->log('passwd', '');
  
              if (Cookie::v('ORGaccess')) {
 -                require_once('secure_hash.inc.php');
 -                setcookie('ORGaccess', hash_encrypt($password), (time()+25920000), '/', '' ,0);
 +                setcookie('ORGaccess', sha1($password), (time()+25920000), '/', '' ,0);
+                 S::logger()->log('cookie_on', '');
              }
  
              $page->assign('mdpok', true);
@@@ -155,7 -155,7 +155,7 @@@ function create_aliases (&$sub
      $res = XDB::query("SELECT hruid FROM auth_user_md5 WHERE user_id = {?}", $uid);
      if ($res->numRows() == 0) {
          return "Tu n'as pas d'adresse à vie pré-attribuée.<br />"
-             . "Envoie un mail à <a href=\"mailto:support@{$globals->mail->domain}</a>\">" .
+             . "Envoie un mail à <a href=\"mailto:support@{$globals->mail->domain}</a>\">"
              . "support@{$globals->mail->domain}</a> en expliquant ta situation.";
      } else {
          // TODO: at the moment forlife == hruid, however we'll have to change
@@@ -225,9 -225,10 +225,9 @@@ function finish_ins($sub_state
  {
      global $globals;
      extract($sub_state);
 -    require_once('secure_hash.inc.php');
  
      $pass     = rand_pass();
 -    $pass_encrypted = hash_encrypt($pass);
 +    $pass_encrypted = sha1($pass);
      $hash     = rand_url_id(12);
  
      XDB::execute('UPDATE auth_user_md5 SET last_known_email={?} WHERE matricule = {?}', $email, $mat);