version 1.22, 2006/11/23 01:49:41
|
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=&LONCAPA::clean_handle($lonid->value); |
if ($handle eq '') { |
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 $lonidsdir=$r->dir_config('lonIDsDir'); |
&Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle); |
&Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle); |
unlink("$lonidsdir/$handle.id"); |
unlink("$lonidsdir/$handle.id"); |
my %temp=('logout' => time); |
my %temp=('logout' => time); |
Line 66 sub handler {
|
Line 63 sub handler {
|
$env{'user.name'}, |
$env{'user.name'}, |
$env{'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 86 sub handler {
|
Line 91 sub handler {
|
} else { |
} else { |
$start_page=&Apache::loncommon::start_page('Logged Out',undef, |
$start_page=&Apache::loncommon::start_page('Logged Out',undef, |
{'no_inline_link' => 1,}); |
{'no_inline_link' => 1,}); |
my %lt=&Apache::lonlocal::texthash('gb' => 'Goodbye', |
|
'cw' => 'close this window', |
|
'li' => 'log in again', |
|
'pe' => 'Please either', |
|
'or' => 'or'); |
|
my $login_url = '/adm/'.($env{'request.sso.login'} ? 'roles' |
|
: 'login'); |
|
|
|
$relogmessage=(<<ENDRELOG); |
$relogmessage.='<h1>'.&mt('Goodbye').'</h1>'; |
<h1>$lt{'gb'}!</h1> |
|
$lt{'pe'} <a href="javascript:self.close();">$lt{'cw'}</a> $lt{'or'} |
|
<a href="$login_url?domain=$env{'user.domain'}">$lt{'li'}</a>. |
|
ENDRELOG |
|
|
|
|
if (!$env{'request.sso.norelogin'}) { |
|
my $relogin_server; |
|
if ($env{'request.sso.reloginserver'}) { |
|
$relogin_server = $env{'request.sso.reloginserver'}; |
|
} |
|
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'} |
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'))) { |
&& defined($r->dir_config('lonSSOUserLogoutMessageFile'))) { |
open(my $fh,$r->dir_config('lonSSOUserLogoutMessageFile')); |
open(my $fh,$r->dir_config('lonSSOUserLogoutMessageFile')); |
$relogmessage.= join('',<$fh>); |
$relogmessage.= join('',<$fh>); |
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__ |
|
|