Add a 14 day default session time rather than 24 hours.
[plewww.git] / planetlab / includes / plc_session.php
index f3a3d0d..4c42375 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');
@@ -47,7 +50,7 @@ class PLCSession
 
   function PLCSession($name = NULL, $pass = NULL)
   {
-               $name= strtolower( $name );
+    $name= strtolower( $name );
     // User API access
     if ($name && $pass) {
       $api = new PLCAPI(array('AuthMethod' => "password",
@@ -55,20 +58,21 @@ 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);
       $this->api = $api;
 
       // Get account details
-      list($person) = $api->GetPersons(array($name));
+      list($person) = $api->GetPersons(array('email'=>$name,'peer_id'=>NULL));
       $this->person = $person;
 
       // Save session variables
@@ -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());
+  }
+}
+
 ?>