version 1.33, 2015/01/08 21:18:29
|
version 1.36, 2017/02/25 20:00:36
|
Line 106 sub handler {
|
Line 106 sub handler {
|
if ($env{'user.name'} eq 'public' |
if ($env{'user.name'} eq 'public' |
&& $env{'user.domain'} eq 'public') { |
&& $env{'user.domain'} eq 'public') { |
my $url = $protocol.'://'.$switch_to.$r->uri; |
my $url = $protocol.'://'.$switch_to.$r->uri; |
|
unlink($handle); |
|
#expire the cookie |
|
my $c = new CGI::Cookie(-name => 'lonPubID', |
|
-value => '', |
|
-expires => '-10y',); |
|
$r->header_out('Set-cookie' => $c); |
return &do_redirect($r,$url,1) |
return &do_redirect($r,$url,1) |
} |
} |
|
|
my $skip_canhost_check = ''; |
my $skip_canhost_check = ''; |
if ($env{'form.role'}) { |
if ($env{'form.role'}) { |
if (!exists($env{'user.role.'.$env{'form.role'}})) { |
if (!exists($env{'user.role.'.$env{'form.role'}})) { |
return FORBIDDEN; |
delete($env{'form.role'}); |
} else { |
} else { |
my $now = time; |
my $now = time; |
my ($start,$end) = split(/\./,$env{'user.role.'.$env{'form.role'}}); |
my ($start,$end) = split(/\./,$env{'user.role.'.$env{'form.role'}}); |
if (($start && $start > $now) || ($end && $end < $now)) { |
if (($start && $start > $now) || ($end && $end < $now)) { |
return FORBIDDEN; |
delete($env{'form.role'}); |
} elsif ($env{'form.role'} eq 'au./'.$env{'user.domain'}.'/') { |
} elsif ($env{'form.role'} eq 'au./'.$env{'user.domain'}.'/') { |
if (&Apache::lonnet::homeserver($env{'user.name'},$env{'user.domain'}) eq $env{'form.otherserver'}) { |
if (&Apache::lonnet::homeserver($env{'user.name'},$env{'user.domain'}) eq $env{'form.otherserver'}) { |
$skip_canhost_check = 1; |
$skip_canhost_check = 1; |
Line 157 sub handler {
|
Line 163 sub handler {
|
|
|
#remove session env, and log event |
#remove session env, and log event |
unlink($handle); |
unlink($handle); |
|
if ($env{'user.linkedenv'} ne '') { |
|
my $lonidsdir=$r->dir_config('lonIDsDir'); |
|
if ((-l $env{'user.linkedenv'}) && |
|
(readlink($env{'user.linkedenv'}) eq "$lonidsdir/$handle.id")) { |
|
unlink($env{'user.linkedenv'}); |
|
} |
|
} |
my %temp=('switchserver' => time.':'.$env{'form.otherserver'}, |
my %temp=('switchserver' => time.':'.$env{'form.otherserver'}, |
$env{'form.role'}); |
$env{'form.role'}); |
&Apache::lonnet::put('email_status',\%temp); |
&Apache::lonnet::put('email_status',\%temp); |
|
my $logmsg = "Switch Server to $env{'form.otherserver'}"; |
|
if ($env{'form.role'}) { |
|
$logmsg .= " with role: $env{'form.role'}"; |
|
} else { |
|
$logmsg .= " (no role)"; |
|
} |
|
$logmsg .= ' '.$ENV{'REMOTE_ADDR'}; |
&Apache::lonnet::log($env{'user.domain'},$env{'user.name'}, |
&Apache::lonnet::log($env{'user.domain'},$env{'user.name'}, |
$env{'user.home'}, |
$env{'user.home'},$logmsg); |
"Switch Server to $env{'form.otherserver'} with role $env{'form.role'} $ENV{'REMOTE_ADDR'}"); |
|
|
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
|
|
Line 170 sub handler {
|
Line 189 sub handler {
|
my $c = new CGI::Cookie(-name => 'lonID', |
my $c = new CGI::Cookie(-name => 'lonID', |
-value => '', |
-value => '', |
-expires => '-10y',); |
-expires => '-10y',); |
$r->header_out('Set-cookie' => $c); |
$r->headers_out->add('Set-cookie' => $c); |
|
if ($env{'user.linkedenv'}) { |
|
my $linked = new CGI::Cookie(-name => 'lonLinkID', |
|
-value => '', |
|
-expires => '-10y',); |
|
$r->headers_out->add('Set-cookie' => $linked); |
|
} |
|
|
if ($r->header_only) { |
if ($r->header_only) { |
$r->send_http_header; |
$r->send_http_header; |