version 1.30, 2010/09/06 15:44:05
|
version 1.33, 2015/01/08 21:18:29
|
Line 96 sub handler {
|
Line 96 sub handler {
|
|
|
if (!defined($switch_to)) { return FORBIDDEN; } |
if (!defined($switch_to)) { return FORBIDDEN; } |
|
|
|
my $protocol = 'http'; |
|
if ($env{'form.otherserver'}) { |
|
if ($Apache::lonnet::protocol{$env{'form.otherserver'}} eq 'https') { |
|
$protocol = $Apache::lonnet::protocol{$env{'form.otherserver'}}; |
|
} |
|
} |
|
|
if ($env{'user.name'} eq 'public' |
if ($env{'user.name'} eq 'public' |
&& $env{'user.domain'} eq 'public') { |
&& $env{'user.domain'} eq 'public') { |
my $url = 'http://'.$switch_to.$r->uri; |
my $url = $protocol.'://'.$switch_to.$r->uri; |
return &do_redirect($r,$url,1) |
return &do_redirect($r,$url,1) |
} |
} |
|
|
Line 115 sub handler {
|
Line 122 sub handler {
|
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; |
} |
} |
} elsif ($env{'form.role'} =~ m{^[ac]a\./($match_domain)/($match_username)/$}) { |
} elsif ($env{'form.role'} =~ m{^[ac]a\./($match_domain)/($match_username)$}) { |
if (&Apache::lonnet::homeserver($2,$1) eq $env{'form.otherserver'}) { |
if (&Apache::lonnet::homeserver($2,$1) eq $env{'form.otherserver'}) { |
$skip_canhost_check = 1; |
$skip_canhost_check = 1; |
} |
} |
Line 173 sub handler {
|
Line 180 sub handler {
|
|
|
# ---------------------------------------------------------------- Get handover |
# ---------------------------------------------------------------- Get handover |
|
|
|
my ($is_balancer) = &Apache::lonnet::check_loadbalancing($env{'user.name'},$env{'user.domain'}); |
my %info=('ip' => $ENV{'REMOTE_ADDR'}, |
my %info=('ip' => $ENV{'REMOTE_ADDR'}, |
'domain' => $env{'user.domain'}, |
'domain' => $env{'user.domain'}, |
'username' => $env{'user.name'}, |
'username' => $env{'user.name'}, |
'role' => $env{'form.role'}, |
'role' => $env{'form.role'}, |
'server' => $r->dir_config('lonHostID')); |
'server' => $r->dir_config('lonHostID'), |
|
'balancer' => $is_balancer); |
if ($env{'form.origurl'}) { |
if ($env{'form.origurl'}) { |
$info{'origurl'} = $env{'form.origurl'}; |
$info{'origurl'} = $env{'form.origurl'}; |
} |
} |
Line 191 sub handler {
|
Line 200 sub handler {
|
$info{'sso.reloginserver'} = $env{'request.sso.reloginserver'}; |
$info{'sso.reloginserver'} = $env{'request.sso.reloginserver'}; |
} |
} |
my $token = &Apache::lonnet::tmpput(\%info,$env{'form.otherserver'}); |
my $token = &Apache::lonnet::tmpput(\%info,$env{'form.otherserver'}); |
my $url ='http://'.$switch_to.'/adm/login?'. |
my $url =$protocol.'://'.$switch_to.'/adm/login?'. |
'domain='.$env{'user.domain'}. |
'domain='.$env{'user.domain'}. |
'&username='.$env{'user.name'}. |
'&username='.$env{'user.name'}. |
'&token='.$token; |
'&token='.$token; |