version 1.17, 2006/04/05 22:28:58
|
version 1.31, 2008/05/13 15:06:34
|
Line 41 sub handler {
|
Line 41 sub handler {
|
|
|
#Check for cookie |
#Check for cookie |
my $requrl=$r->uri; |
my $requrl=$r->uri; |
my %cookies=CGI::Cookie->parse($r->header_in('Cookie')); |
my $handle = &Apache::lonnet::check_for_valid_session($r); |
my $lonid=$cookies{'lonID'}; |
|
my $cookie; |
|
if (!$lonid) { |
|
return FORBIDDEN; |
|
} |
|
|
|
#check if cookie still valid |
#check if cookie still valid |
my $handle=$lonid->value; |
if ($handle eq '') { |
$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); |
$r->log_reason("Cookie $handle not valid", $r->filename); |
return FORBIDDEN; |
return FORBIDDEN; |
} |
} |
|
|
#we've got a valid user |
#we've got a valid user |
|
#any locks in place? |
|
my $locknum=&Apache::lonnet::get_locks(); |
|
if ($locknum) { return 409; } |
|
#nope, go ahead |
my @profile; |
my @profile; |
my %sessionhash; |
my $lonidsdir=$r->dir_config('lonIDsDir'); |
{ |
&Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle); |
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"); |
unlink("$lonidsdir/$handle.id"); |
my %temp=('logout' => time); |
my %temp=('logout' => time); |
&Apache::lonnet::put('email_status',\%temp); |
&Apache::lonnet::put('email_status',\%temp); |
&Apache::lonnet::log($sessionhash{'user.domain'}, |
&Apache::lonnet::log($env{'user.domain'}, |
$sessionhash{'user.name'}, |
$env{'user.name'}, |
$sessionhash{'user.home'}, |
$env{'user.home'}, |
"Logout $ENV{'REMOTE_ADDR'}"); |
"Logout $ENV{'REMOTE_ADDR'}"); |
|
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
|
|
|
#expire the cookie |
|
my $c = new CGI::Cookie(-name => 'lonID', |
|
-value => '', |
|
-expires => '-10y',); |
|
$r->header_out('Set-cookie' => $c); |
|
|
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
return OK if $r->header_only; |
# -------------------------------------------------------- Menu script and info |
# -------------------------------------------------------- Menu script and info |
Line 87 sub handler {
|
Line 81 sub handler {
|
# ---------------------------------------------------------------- Get handover |
# ---------------------------------------------------------------- Get handover |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['handover']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['handover']); |
my $switch=''; |
my $switch=''; |
my $bodytag=''; |
my $start_page=''; |
my $relogmessage=''; |
my $relogmessage=''; |
if ($env{'form.handover'}) { |
if ($env{'form.handover'}) { |
$switch='<meta HTTP-EQUIV="Refresh" CONTENT="0.5; url='. |
$switch='<meta HTTP-EQUIV="Refresh" CONTENT="0.5; url='. |
Line 95 sub handler {
|
Line 89 sub handler {
|
$start_page=&Apache::loncommon::start_page('Switching Server ...', |
$start_page=&Apache::loncommon::start_page('Switching Server ...', |
$switch); |
$switch); |
} else { |
} else { |
$start_page=&Apache::loncommon::start_page('Logged Out'); |
$start_page=&Apache::loncommon::start_page('Logged Out',undef, |
my %lt=&Apache::lonlocal::texthash('gb' => 'Goodbye', |
{'no_inline_link' => 1,}); |
'cw' => 'close this window', |
|
'li' => 'log in again', |
$relogmessage.='<h1>'.&mt('Goodbye').'</h1>'; |
'pe' => 'Please either', |
|
'or' => 'or'); |
if (!$env{'request.sso.norelogin'}) { |
$relogmessage=(<<ENDRELOG); |
my $relogin_server; |
<h1>$lt{'gb'}!</h1> |
if ($env{'request.sso.reloginserver'}) { |
$lt{'pe'} <a href="javascript:self.close();">$lt{'cw'}</a> $lt{'or'} |
$relogin_server = $env{'request.sso.reloginserver'}; |
<a href="/adm/login?domain=$sessionhash{'user.domain'}">$lt{'li'}</a>. |
} |
ENDRELOG |
my $login_url = $relogin_server.'/adm/'. |
|
($env{'request.sso.login'} ? 'roles': 'login'); |
|
|
|
$relogmessage.=&mt('Please either [_1]close this window[_2] or [_3]log in again[_4].' |
|
,'<a href="javascript:self.close();">','</a>' |
|
,'<a href="'.$login_url.'?domain='.$env{'user.domain'}.'">','</a>'); |
|
} |
|
my $domain = $env{'user.domain'}; |
|
if ($env{'request.sso.login'} |
|
&& defined($r->dir_config("lonSSOUserLogoutMessageFile_$domain"))) { |
|
open(my $fh,$r->dir_config("lonSSOUserLogoutMessageFile_$domain")); |
|
$relogmessage.= join('',<$fh>); |
|
} |
|
if ($env{'request.sso.login'} |
|
&& defined($r->dir_config('lonSSOUserLogoutMessageFile'))) { |
|
open(my $fh,$r->dir_config('lonSSOUserLogoutMessageFile')); |
|
$relogmessage.= join('',<$fh>); |
|
} |
|
|
} |
} |
$end_page=&Apache::loncommon::end_page(); |
my $end_page=&Apache::loncommon::end_page(); |
# --------------------------------------------------------------- Screen Output |
# --------------------------------------------------------------- Screen Output |
$r->print(<<ENDDOCUMENT); |
$r->print(<<ENDDOCUMENT); |
$start_page |
$start_page |
Line 115 $windowinfo
|
Line 127 $windowinfo
|
$relogmessage |
$relogmessage |
$end_page |
$end_page |
ENDDOCUMENT |
ENDDOCUMENT |
&Apache::lonnet::flushcourselogs(); |
$r->register_cleanup(\&flush_course_logs); |
return OK; |
return OK; |
} |
} |
|
|
|
sub flush_course_logs { |
|
&Apache::lonnet::flushcourselogs(); |
|
return OK; |
|
} |
|
|
1; |
1; |
__END__ |
__END__ |
|
|