trailing spaces
[plewww.git] / planetlab / includes / plc_session.php
index f092f0f..ebdc050 100644 (file)
@@ -8,14 +8,13 @@
 // To use, include this file and declare the global variable
 // $plc. This object contains the following members:
 //
-// admin: Admin API handle. Use cautiously.
 // person: If logged in, the user's GetPersons() details
 // api: If logged in, the user's API handle
 //
 // Mark Huang <mlhuang@cs.princeton.edu>
 // Copyright (C) 2006 The Trustees of Princeton University
 //
-// $Id: plc_session.php 804 2007-08-31 13:58:58Z thierry $ $
+// $Id$ $
 //
 
 // Usually in /etc/planetlab/php
@@ -24,6 +23,10 @@ require_once 'plc_config.php';
 // Usually in /usr/share/plc_api/php
 require_once 'plc_api.php';
 
+
+require_once 'plc_functions.php';
+
+
 $cwd = getcwd();
 chdir($_SERVER['DOCUMENT_ROOT']);
 $included = include_once('./includes/bootstrap.inc');
@@ -45,7 +48,7 @@ class PLCSession
   var $alt_person;
   var $alt_auth;
 
-  function PLCSession($name = NULL, $pass = NULL)
+  function __construct($name = NULL, $pass = NULL)
   {
     $name= strtolower( $name );
     // User API access
@@ -55,13 +58,14 @@ class PLCSession
                              'AuthString' => $pass));
 
       // Authenticate user and get session key
-      $session = $api->GetSession();
+      $seconds_to_expire = (24 * 60 * 60 * 14);
+      $session = $api->GetSession($seconds_to_expire);
       if (!$session) {
-       return NULL;
+          return NULL;
       }
 
       // Change GetSession() at some point to return expires as well
-      $expires = time() + (24 * 60 * 60);
+      $expires = time() + $seconds_to_expire;
 
       // Change to session authentication
       $api->auth = array('AuthMethod' => "session", 'session' => $session);
@@ -75,7 +79,7 @@ class PLCSession
       $_SESSION['plc'] = array('auth' => $api->auth,
                               'person' => $person,
                               'expires' => $expires);
-     } 
+     }
     }
 
     function BecomePerson($person_id)
@@ -83,12 +87,12 @@ class PLCSession
        list($person) = $this->api->GetPersons(array($person_id));
        if ($person)
        {
-           //Get this users session if one exists, create 
+           //Get this users session if one exists, create
            //one otherwise
            list($session) = $this->api->GetSessions(array('person_id' => $person['person_id']));
            if (!$session)
            {
-               $session = $this->api->AddSession($person['person_id']);        
+               $session = $this->api->AddSession($person['person_id']);
            }
            else
            {
@@ -108,12 +112,12 @@ class PLCSession
            $_SESSION['plc']['person'] = $this->person;
            $_SESSION['plc']['alt_person'] = $this->alt_person;
             $_SESSION['plc']['alt_auth'] = $this->alt_auth;
-           
-       }       
+
+       }
     }
 
     function BecomeSelf()
-    {  
+    {
        if($this->alt_auth && $this->alt_person )
        {
            $this->person = $this->alt_person;
@@ -125,9 +129,9 @@ class PLCSession
            $_SESSION['plc']['person'] = $_SESSION['plc']['alt_person'];
            unset($_SESSION['plc']['alt_auth']);
             unset($_SESSION['plc']['alt_person']);
-       } 
+       }
     }
-  
+
 
   function logout()
   {
@@ -143,8 +147,10 @@ if (!empty($_SESSION['plc'])) {
   if ($_SESSION['plc']['expires'] > time()) {
     $plc->person = $_SESSION['plc']['person'];
     $plc->api = new PLCAPI($_SESSION['plc']['auth']);
-    $plc->alt_person = $_SESSION['plc']['alt_person'];
-    $plc->alt_auth = $_SESSION['plc']['alt_auth'];
+    if (array_key_exists('alt_person',$_SESSION['plc']))
+      $plc->alt_person = $_SESSION['plc']['alt_person'];
+    if (array_key_exists('alt_auth',$_SESSION['plc']))
+      $plc->alt_auth = $_SESSION['plc']['alt_auth'];
   } else {
     // Destroy PHP session
     session_destroy();
@@ -154,4 +160,11 @@ if (!empty($_SESSION['plc'])) {
 // For convenience
 $api = $plc->api;
 
+if ($api && $api->AuthCheck() != 1) {
+  $current_pagename = basename($_SERVER['PHP_SELF']);
+  if ($current_pagename != basename(l_logout())) {
+    plc_redirect(l_logout());
+  }
+}
+
 ?>