Merge branch 'platal-0.9.16'
[platal.git] / modules / xnet.php
index 09f58e9..c8e5611 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
+ *  Copyright (C) 2003-2008 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -25,15 +25,14 @@ class XnetModule extends PLModule
     {
         return array(
             'index'     => $this->make_hook('index',     AUTH_PUBLIC),
-            'login'     => $this->make_hook('login',     AUTH_MDP),
             'exit'      => $this->make_hook('exit',      AUTH_PUBLIC),
 
             'admin'     => $this->make_hook('admin',     AUTH_MDP, 'admin'),
             'groups'    => $this->make_hook('groups',    AUTH_PUBLIC),
             'groupes.php' => $this->make_hook('groups2', AUTH_PUBLIC),
             'plan'      => $this->make_hook('plan',      AUTH_PUBLIC),
-            'send_bug'  => $this->make_hook('bug',       AUTH_MDP),
             'photo'     => $this->make_hook('photo',     AUTH_MDP),
+            'autologin' => $this->make_hook('autologin', AUTH_MDP),
         );
     }
 
@@ -58,47 +57,22 @@ class XnetModule extends PLModule
         exit;
     }
 
-    function handler_bug(&$page)
-    {
-        $page->changeTpl('bug.tpl',SIMPLE);
-        $page->addJsLink('close_on_esc.js');
-        if (Env::has('send')) {
-            $page->assign('bug_sent',1);
-            $mymail = new PlMailer();
-            $mymail->setFrom('"'.S::v('prenom').' '.S::v('nom').'" <'.S::v('bestalias').'@polytechnique.org>');
-            $mymail->addTo('support+platal@polytechnique.org');
-            $mymail->setSubject('Plat/al '.Env::v('task_type').' : '.Env::v('item_summary'));
-            $mymail->setTxtBody(Env::v('detailed_desc'));
-            $mymail->send();
-        }
-    }
-    
     function handler_index(&$page)
     {
         $page->nomenu = true;
         $page->changeTpl('xnet/index.tpl');
     }
 
-    function handler_login(&$page)
-    {
-        $allkeys = func_get_args();
-        unset($allkeys[0]);
-        $url = join('/',$allkeys);
-        pl_redirect($url);
-    }
-
     function handler_exit(&$page)
     {
-        if (S::has('suid')) {
-            killSuid();
-        }
+        XnetSession::killSuid();
         XnetSession::destroy();
         $page->changeTpl('xnet/deconnexion.tpl');
     }
 
     function handler_admin(&$page)
     {
-        new_admin_page('xnet/admin.tpl');
+        $page->changeTpl('xnet/admin.tpl');
 
         if (Get::has('del')) {
             $res = XDB::query('SELECT id, nom, mail_domain
@@ -107,8 +81,10 @@ class XnetModule extends PLModule
             list($id, $nom, $domain) = $res->fetchOneRow();
             $page->assign('nom', $nom);
             if ($id && Post::has('del')) {
+                S::assert_xsrf_token();
+
                 XDB::query('DELETE FROM groupex.membres WHERE asso_id={?}', $id);
-                $page->trig('membres supprimés');
+                $page->trig('membres supprimés');
 
                 if ($domain) {
                     XDB::query('DELETE FROM  virtual_domains WHERE domain={?}', $domain);
@@ -122,12 +98,12 @@ class XnetModule extends PLModule
                         foreach ($listes as $l) {
                             $mmlist->delete_list($l['list'], true);
                         }
-                        $page->trig('mail lists surpprimées');
+                        $page->trig('mail lists surpprimées');
                     }
                 }
 
                 XDB::query('DELETE FROM groupex.asso WHERE id={?}', $id);
-                $page->trig("Groupe $nom supprimé");
+                $page->trig("Groupe $nom supprimé");
                 Get::kill('del');
             }
             if (!$id) {
@@ -136,6 +112,8 @@ class XnetModule extends PLModule
         }
 
         if (Post::has('diminutif')) {
+            S::assert_xsrf_token();
+
             XDB::query('INSERT INTO groupex.asso (id,diminutif)
                                  VALUES(NULL,{?})', Post::v('diminutif'));
             pl_redirect('../'.Post::v('diminutif').'/edit');
@@ -223,6 +201,17 @@ class XnetModule extends PLModule
 
         $page->setType($cat);
     }
+
+    function handler_autologin(&$page)
+    {
+        $allkeys = func_get_args();
+        unset($allkeys[0]);
+        $url = join('/',$allkeys);
+        header("Content-type: text/javascript; charset=utf-8");
+        echo '$.ajax({ url: "'.$url.'?forceXml=1", dataType: "xml", success: function(xml) { $("body",xml).insertBefore("body"); $("body:eq(1)").remove(); }});';
+        exit;
+    }
 }
 
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
 ?>