X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fxnetsession.php;h=4a96f12580a30af0b96c61d6b0e6620f678216df;hb=faa06583dfbe5e1a3c803e20ded33c42565b00c1;hp=73dd8446900b1ad739b6ae73b8e6ec4640115265;hpb=1c82f959c6e69a5a979e46e530872685106f9103;p=platal.git diff --git a/classes/xnetsession.php b/classes/xnetsession.php index 73dd844..4a96f12 100644 --- a/classes/xnetsession.php +++ b/classes/xnetsession.php @@ -24,15 +24,10 @@ class XnetSession extends PlSession public function __construct() { parent::__construct(); - S::bootstrap('perms_backup', new PlFlagSet()); } public function startAvailableAuth() { - if (!(S::v('perms') instanceof PlFlagSet)) { - S::set('perms', S::v('perms_backup')); - } - if (!S::logged() && Get::has('auth')) { if (!$this->start(AUTH_MDP)) { return false; @@ -74,7 +69,6 @@ class XnetSession extends PlSession $perms->addFlag('groupannu'); } S::set('perms', $perms); - S::set('perms_backup', $perms); } return true; } @@ -130,6 +124,32 @@ class XnetSession extends PlSession return true; } + public function tokenAuth($login, $token) + { + // FIXME: we broke the session here because some RSS feeds (mainly wiki feeds) require + // a valid nome and checks the permissions. When the PlUser object will be ready, we'll + // be able to return a simple 'PlUser' object here without trying to alterate the + // session. + $res = XDB::query('SELECT u.user_id AS uid, u.perms, u.nom, u.nom_usage, u.prenom, u.promo, FIND_IN_SET(\'femme\', u.flags) AS sexe + 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); + if ($res->numRows() == 1) { + $sess = $res->fetchOneAssoc(); + if (!S::has('uid')) { + $_SESSION = $sess; + $this->makePerms($sess['perms']); + return S::i('uid'); + } else if (S::i('uid') == $sess['uid']) { + return S::i('uid'); + } else { + Platal::page()->kill('Invalid state. To be fixed when hruid is ready'); + } + } + return null; + } + public function doSelfSuid() { if (!$this->startSUID(S::i('uid'))) { @@ -149,7 +169,6 @@ class XnetSession extends PlSession S::kill('may_update'); S::kill('is_member'); S::set('perms', $suid['perms']); - S::set('perms_backup', $suid['perms_backup']); return true; } @@ -158,7 +177,6 @@ class XnetSession extends PlSession $flags = new PlFlagSet(); if ($perm == 'disabled' || $perm == 'ext') { S::set('perms', $flags); - S::set('perms_backup', $flags); return; } $flags->addFlag(PERMS_USER); @@ -166,7 +184,11 @@ class XnetSession extends PlSession $flags->addFlag(PERMS_ADMIN); } S::set('perms', $flags); - S::set('perms_backup', $flags); + } + + public function loggedLevel() + { + return AUTH_COOKIE; } public function sureLevel()