X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fxnet%2Fsession.inc.php;h=92c189ab81bfb908efdfa0dc20b312a01ccff9bb;hb=8907f26377348b0f6f454abb2cebf363ea9cc8dd;hp=3699b55871f5b29d06d1f22929747d8e99a7240b;hpb=a7de4ef724d1a3b0bf978a50ce7cc9d23412c7a0;p=platal.git diff --git a/include/xnet/session.inc.php b/include/xnet/session.inc.php index 3699b55..92c189a 100644 --- a/include/xnet/session.inc.php +++ b/include/xnet/session.inc.php @@ -1,6 +1,6 @@ xnet->secret); $url .= "&url=".urlencode($returl); $_SESSION['loginX'] = $url; } + + if (S::logged() && $globals->asso()) { + $perms = S::v('perms'); + $perms->rmFlag('groupadmin'); + $perms->rmFlag('groupmember'); + $perms->rmFlag('groupannu'); + if (may_update()) { + $perms->addFlag('groupadmin'); + $perms->addFlag('groupmember'); + $perms->addFlag('groupannu'); + } + if (is_member()) { + $perms->addFlag('groupmember'); + if ($globals->asso('pub') != 'private') { + $perms->addFlag('groupannu'); + } + } + if ($globals->asso('cat') == 'Promotions') { + $perms->addFlag('groupannu'); + } + $_SESSION['perms'] = $perms; + } } // }}} @@ -81,10 +104,16 @@ class XnetSession // }}} // {{{ doAuthX - public static function doAuthX() { + public static function doAuthX() + { global $globals, $page; if (md5('1'.S::v('challenge').$globals->xnet->secret.Get::i('uid').'1') != Get::v('auth')) { + Get::kill('auth'); + if (!$page) { + require_once 'xnet.inc.php'; + new_skinned_page('platal/index.tpl'); + } $page->kill("Erreur d'authentification avec polytechnique.org !"); } @@ -99,8 +128,12 @@ class XnetSession LIMIT 1", Get::i('uid')); $_SESSION = array_merge($_SESSION, $res->fetchOneAssoc()); $_SESSION['auth'] = AUTH_MDP; + require_once 'xorg/session.inc.php'; + $_SESSION['perms'] =& XorgSession::make_perms(S::v('perms')); S::kill('challenge'); S::kill('loginX'); + S::kill('may_update'); + S::kill('is_member'); Get::kill('auth'); Get::kill('uid'); $path = Get::v('n'); @@ -123,14 +156,15 @@ class XnetSession if (!S::has('suid')) { $_SESSION['suid'] = $_SESSION; } - $_SESSION['perms'] = 'user'; + require_once 'xorg/session.inc.php'; + $_SESSION['perms'] =& XorgSession::make_perms('user'); } // }}} // {{{ killSuid public static function killSuid() - { + { if (!S::has('suid')) { return; } @@ -170,7 +204,7 @@ function may_update($force = false, $lose = false) $res = XDB::query("SELECT perms FROM groupex.membres WHERE uid={?} AND asso_id={?}", - S::v('uid'), $globals->asso('id')); + S::v('uid'), $asso_id); $may_update[$asso_id] = ($res->fetchOneCell() == 'admin'); } return $may_update[$asso_id]; @@ -182,7 +216,7 @@ function may_update($force = false, $lose = false) /** Get membership informations for the current asso * @param force Force membership to be read from database * @param lose Force membership to be false - */ + */ function is_member($force = false, $lose = false) { if (!isset($_SESSION['is_member'])) {