-function wiki_assign_auth() {
- global $page, $wiki_auths;
- $page->assign('logged', S::logged());
- $page->assign('identified', S::identified());
- $page->assign('has_perms', S::has_perms());
- $page->assign('public', true);
- $page->assign('wiki_admin', S::has_perms() && S::identified());
+function wiki_apply_feed_perms($perm)
+{
+ if ($perm == 'public') {
+ return;
+ }
+
+ require_once 'rss.inc.php';
+ $uid = init_rss(null, Env::v('user'), Env::v('hash'));
+ $res = XDB::query('SELECT user_id AS uid, IF (nom_usage <> \'\', nom_usage, nom) AS nom, prenom, perms
+ FROM auth_user_md5
+ WHERE user_id = {?}', $uid);
+ if (!$res->numRows()) {
+ exit;
+ }
+ $table = $res->fetchOneAssoc();
+ $_SESSION = array_merge($_SESSION, $table, array('forlife' => Env::v('user')));
+ require_once 'xorg/session.inc.php';
+ $_SESSION['perms'] =& XorgSession::make_perms($_SESSION['perms']);
+ if ($perm == 'logged' || $_SESSION['perms']->hasFlag('admin')) {
+ return;
+ }
+ exit;
+}
+
+function wiki_apply_perms($perm) {
+ global $page, $platal, $globals;
+
+ switch ($perm) {
+ case 'public':
+ return;
+
+ case 'logged':
+ if (!call_user_func(array($globals->session, 'doAuthCookie'))) {
+ $platal = empty($GLOBALS['IS_XNET_SITE']) ? new Platal() : new Xnet();
+ $platal->force_login($page);
+ }
+ return;
+
+ default:
+ if (!call_user_func(array($globals->session, 'doAuth'))) {
+ $platal = empty($GLOBALS['IS_XNET_SITE']) ? new Platal() : new Xnet();
+ $platal->force_login($page);
+ }
+ if ($perm == 'admin') {
+ check_perms();
+ }
+ return;
+ }