X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fxnetsession.php;h=b7a8c1fcf734000cce971f39bb5338982499054d;hb=9a13e83f4b39c7feaba924b724fd43497109481b;hp=06120326e23a186dcdae27887880ae731849472d;hpb=8333d1f473e2d5d794208746290989c121f9f386;p=platal.git diff --git a/classes/xnetsession.php b/classes/xnetsession.php index 0612032..b7a8c1f 100644 --- a/classes/xnetsession.php +++ b/classes/xnetsession.php @@ -29,27 +29,7 @@ class XnetSession extends XorgSession public function startAvailableAuth() { if (!S::logged() && Get::has('auth')) { - if (!$this->start(AUTH_MDP)) { - return false; - } - } - - if (!S::logged() && Post::has('auth_type') && Post::v('auth_type') == 'xnet' && !Post::has('wait')) { - $email = Post::v('username'); - $type = XDB::fetchOneCell('SELECT type - FROM accounts - WHERE email = {?}', - $email); - if ((!is_null($type) && $type != 'xnet') || !User::isForeignEmailAddress($email)) { - Platal::page()->trigErrorRedirect('Ce formulaire d\'authentification est réservé aux extérieurs à la communauté polytechnicienne.', ''); - } - - $user = parent::doAuth(AUTH_MDP); - if (is_null($user)) { - return false; - } - if (!parent::checkAuth(AUTH_MDP) || !parent::startSessionAs($user, AUTH_MDP)) { - $this->destroy(); + if (!$this->start(AUTH_PASSWD)) { return false; } } @@ -97,7 +77,7 @@ class XnetSession extends XorgSession protected function doAuth($level) { - if (S::identified()) { // ok, c'est bon, on n'a rien à faire + if (S::identified()) { // Nothing to do there return User::getSilentWithValues(null, array('uid' => S::i('uid'))); } if (!Get::has('auth')) { @@ -108,7 +88,7 @@ class XnetSession extends XorgSession return null; } Get::kill('auth'); - S::set('auth', AUTH_MDP); + S::set('auth', AUTH_PASSWD); return User::getSilentWithValues(null, array('uid' => Get::i('uid'))); } @@ -118,9 +98,9 @@ class XnetSession extends XorgSession if (!$user->checkPerms('groups')) { return false; } - S::v('perms')->addFlag(PERMS_USER); + if ($level == AUTH_SUID) { - S::set('auth', AUTH_MDP); + S::set('auth', AUTH_PASSWD); } S::set('uid', $user->uid); @@ -135,8 +115,8 @@ class XnetSession extends XorgSession S::set('perms', $user->perms); S::set('is_admin', $user->is_admin); - - $this->makePerms($user->perms, $user->is_admin); + // Add the 'user' perms to the user. + $this->makePerms($user->perms . ',' . PERMS_USER, $user->is_admin); S::kill('challenge'); S::kill('loginX'); S::kill('may_update'); @@ -157,7 +137,7 @@ class XnetSession extends XorgSession if (!$this->startSUID($user)) { return false; } - S::set('perms', User::makePerms(PERMS_USER)); + S::set('perms', User::makePerms(PERMS_USER . ",groups")); return true; }