[LON-CAPA-cvs] cvs: loncom /auth lonlogout.pm

albertel lon-capa-cvs@mail.lon-capa.org
Wed, 05 Apr 2006 22:28:59 -0000


albertel		Wed Apr  5 18:28:59 2006 EDT

  Modified files:              
    /loncom/auth	lonlogout.pm 
  Log:
  - revamping if's so the indenting for most of the routine isn't half the screen
  
  
Index: loncom/auth/lonlogout.pm
diff -u loncom/auth/lonlogout.pm:1.16 loncom/auth/lonlogout.pm:1.17
--- loncom/auth/lonlogout.pm:1.16	Wed Apr  5 18:25:44 2006
+++ loncom/auth/lonlogout.pm	Wed Apr  5 18:28:58 2006
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Logout Handler
 #
-# $Id: lonlogout.pm,v 1.16 2006/04/05 22:25:44 albertel Exp $
+# $Id: lonlogout.pm,v 1.17 2006/04/05 22:28:58 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -39,37 +39,47 @@
 sub handler {
     my $r = shift;
 
+    #Check for cookie
     my $requrl=$r->uri;
     my %cookies=CGI::Cookie->parse($r->header_in('Cookie'));
     my $lonid=$cookies{'lonID'};
     my $cookie;
-    if ($lonid) {
-	my $handle=$lonid->value;
-        $handle=~s/\W//g;
-        my $lonidsdir=$r->dir_config('lonIDsDir');
-        if ((-e "$lonidsdir/$handle.id") && ($handle ne '')) {
-           my @profile;
-           my %sessionhash;
-	    {
-             my $idf=Apache::File->new("$lonidsdir/$handle.id");
-             @profile=<$idf>;
-	    }
-            my $envi;
-            for ($envi=0;$envi<=$#profile;$envi++) {
-		chomp($profile[$envi]);
-		my ($envname,$envvalue)=split(/=/,$profile[$envi]);
-                $sessionhash{$envname}=$envvalue;
-            }
-            unlink("$lonidsdir/$handle.id");
-	    my %temp=('logout' => time);
-	    &Apache::lonnet::put('email_status',\%temp);
-	    &Apache::lonnet::log($sessionhash{'user.domain'},
-                                 $sessionhash{'user.name'},
-                                 $sessionhash{'user.home'},
-                                 "Logout $ENV{'REMOTE_ADDR'}");
-            &Apache::loncommon::content_type($r,'text/html');
-            $r->send_http_header;
-            return OK if $r->header_only;
+    if (!$lonid) {
+	return FORBIDDEN;
+    }
+
+    #check if cookie still valid
+    my $handle=$lonid->value;
+    $handle=~s/\W//g;
+    my $lonidsdir=$r->dir_config('lonIDsDir');
+    if ((!-e "$lonidsdir/$handle.id") || ($handle eq '')) {
+	$r->log_reason("Cookie $handle not valid", $r->filename); 
+	return FORBIDDEN;
+    }
+
+    #we've got a valid user
+    my @profile;
+    my %sessionhash;
+    {
+	my $idf=Apache::File->new("$lonidsdir/$handle.id");
+	@profile=<$idf>;
+    }
+    my $envi;
+    for ($envi=0;$envi<=$#profile;$envi++) {
+	chomp($profile[$envi]);
+	my ($envname,$envvalue)=split(/=/,$profile[$envi]);
+	$sessionhash{$envname}=$envvalue;
+    }
+    unlink("$lonidsdir/$handle.id");
+    my %temp=('logout' => time);
+    &Apache::lonnet::put('email_status',\%temp);
+    &Apache::lonnet::log($sessionhash{'user.domain'},
+			 $sessionhash{'user.name'},
+			 $sessionhash{'user.home'},
+			 "Logout $ENV{'REMOTE_ADDR'}");
+    &Apache::loncommon::content_type($r,'text/html');
+    $r->send_http_header;
+    return OK if $r->header_only;
 # -------------------------------------------------------- Menu script and info
 
     my $windowinfo=&Apache::lonmenu::close();
@@ -80,38 +90,33 @@
     my $bodytag='';
     my $relogmessage='';
     if ($env{'form.handover'}) {
-       $switch='<meta HTTP-EQUIV="Refresh" CONTENT="0.5; url='.
-	   $env{'form.handover'}.'">';
-       $start_page=&Apache::loncommon::start_page('Switching Server ...',
-						  $switch);
-   } else {
-       $start_page=&Apache::loncommon::start_page('Logged Out');
-       my %lt=&Apache::lonlocal::texthash('gb' => 'Goodbye',
-                                          'cw' => 'close this window',
-                                          'li' => 'log in again',
-                                          'pe' => 'Please either',
-                                          'or' => 'or');
-       $relogmessage=(<<ENDRELOG);
-<h1>$lt{'gb'}!</h1>
-    $lt{'pe'} <a href="javascript:self.close();">$lt{'cw'}</a> $lt{'or'}
-<a href="/adm/login?domain=$sessionhash{'user.domain'}">$lt{'li'}</a>.
+	$switch='<meta HTTP-EQUIV="Refresh" CONTENT="0.5; url='.
+	    $env{'form.handover'}.'">';
+	$start_page=&Apache::loncommon::start_page('Switching Server ...',
+						   $switch);
+    } else {
+	$start_page=&Apache::loncommon::start_page('Logged Out');
+	my %lt=&Apache::lonlocal::texthash('gb' => 'Goodbye',
+					   'cw' => 'close this window',
+					   'li' => 'log in again',
+					   'pe' => 'Please either',
+					   'or' => 'or');
+	$relogmessage=(<<ENDRELOG);
+	<h1>$lt{'gb'}!</h1>
+	    $lt{'pe'} <a href="javascript:self.close();">$lt{'cw'}</a> $lt{'or'}
+	<a href="/adm/login?domain=$sessionhash{'user.domain'}">$lt{'li'}</a>.
 ENDRELOG
-   }
-   $end_page=&Apache::loncommon::end_page();
+    }
+    $end_page=&Apache::loncommon::end_page();
 # --------------------------------------------------------------- Screen Output
-            $r->print(<<ENDDOCUMENT);
+    $r->print(<<ENDDOCUMENT);
 $start_page
 $windowinfo
 $relogmessage
 $end_page
 ENDDOCUMENT
-            &Apache::lonnet::flushcourselogs();
-            return OK; 
-        } else { 
-            $r->log_reason("Cookie $handle not valid", $r->filename); 
-        }
-    }
-    return FORBIDDEN;
+    &Apache::lonnet::flushcourselogs();
+    return OK; 
 }
 
 1;