version 1.59, 2022/03/29 19:12:04
|
version 1.62, 2022/06/26 04:03:47
|
Line 285 sub ip_changed {
|
Line 285 sub ip_changed {
|
'username' => $dataref->{'username'}, |
'username' => $dataref->{'username'}, |
'sessionserver' => $lonhost, |
'sessionserver' => $lonhost, |
); |
); |
my @names = ('origurl','symb','role','linkprot','linkkey'); |
my @names = ('origurl','symb','role','linkprotuser','linkprot','linkkey'); |
foreach my $name (@names) { |
foreach my $name (@names) { |
if ($dataref->{$name} ne '') { |
if ($dataref->{$name} ne '') { |
$info{$name} = $dataref->{$name}; |
$info{$name} = $dataref->{$name}; |
Line 308 sub ip_changed {
|
Line 308 sub ip_changed {
|
} |
} |
|
|
sub logout { |
sub logout { |
my ($r,$ip,$handle,$data,$lti_env) = @_; |
my ($r,$ip,$handle,$data,$lti_env,$linkprot_info) = @_; |
my $lonidsdir=$r->dir_config('lonIDsDir'); |
my $lonidsdir=$r->dir_config('lonIDsDir'); |
if (unlink("$lonidsdir/$handle.id")) { |
if (unlink("$lonidsdir/$handle.id")) { |
if (($env{'user.linkedenv'} =~ /^[a-f0-9]+_linked$/) && |
if (($env{'user.linkedenv'} =~ /^[a-f0-9]+_linked$/) && |
Line 335 sub logout {
|
Line 335 sub logout {
|
-expires => '-10y',); |
-expires => '-10y',); |
$r->headers_out->add('Set-cookie' => $c); |
$r->headers_out->add('Set-cookie' => $c); |
} |
} |
my (%info,%user_info,%lti_info); |
|
if (ref($lti_env) eq 'HASH') { |
|
foreach my $key (sort(keys(%{$lti_env}))) { |
|
if ($key =~ /^request\.(.+)$/) { |
|
$lti_info{$1} = $lti_env->{$key}; |
|
} |
|
} |
|
} |
|
my $lonhost = $r->dir_config('lonHostID'); |
my $lonhost = $r->dir_config('lonHostID'); |
|
my ($url,$token,$delay,%info,%user_info); |
if (ref($data) eq 'HASH') { |
if (ref($data) eq 'HASH') { |
%user_info=('ip' => $ip, |
%user_info=('ip' => $ip, |
'domain' => $data->{'domain'}, |
'domain' => $data->{'domain'}, |
Line 354 sub logout {
|
Line 347 sub logout {
|
'symb' => $data->{'symb'}, |
'symb' => $data->{'symb'}, |
'server' => $lonhost); |
'server' => $lonhost); |
} |
} |
%info = (%user_info,%lti_info); |
$delay = 0.1; |
my $token = &Apache::lonnet::tmpput(\%info,$lonhost); |
if (ref($linkprot_info) eq 'HASH') { |
my $url = '/adm/migrateuser?token='.$token; |
if ($linkprot_info->{'linkprotuser'} ne '') { |
|
$token = &Apache::lonnet::tmpput($linkprot_info,$lonhost); |
|
$url = '/adm/login?ltoken='.$token; |
|
} else { |
|
foreach my $key (keys(%user_info)) { |
|
if ($user_info{$key} eq '') { |
|
delete($user_info{$key}); |
|
} |
|
} |
|
%info = (%user_info,%{$linkprot_info}); |
|
$token = &Apache::lonnet::tmpput(\%info,$lonhost); |
|
$url = '/adm/migrateuser?token='.$token; |
|
} |
|
$delay = 0; |
|
} else { |
|
my %lti_info; |
|
if (ref($lti_env) eq 'HASH') { |
|
foreach my $key (sort(keys(%{$lti_env}))) { |
|
if ($key =~ /^request\.(.+)$/) { |
|
$lti_info{$1} = $lti_env->{$key}; |
|
} |
|
} |
|
} |
|
%info = (%user_info,%lti_info); |
|
$token = &Apache::lonnet::tmpput(\%info,$lonhost); |
|
$url = '/adm/migrateuser?token='.$token; |
|
} |
$r->send_http_header; |
$r->send_http_header; |
$r->print( |
$r->print( |
&Apache::loncommon::start_page('Updating Session ...',undef, |
&Apache::loncommon::start_page('Updating Session ...',undef, |
{'redirect' => [0.1,$url], |
{'redirect' => [$delay,$url], |
'only_body' => 1,}). |
'only_body' => 1,}). |
&Apache::loncommon::end_page()); |
&Apache::loncommon::end_page()); |
if ($env{'request.balancercookie'}) { |
if ($env{'request.balancercookie'}) { |
Line 738 sub handler {
|
Line 757 sub handler {
|
my %linkprot_env; |
my %linkprot_env; |
foreach my $item ('linkprot','deeplink.login') { |
foreach my $item ('linkprot','deeplink.login') { |
if ($data{$item}) { |
if ($data{$item}) { |
$linkprot_env{'request.'.$item} = $data{$item}; |
$linkprot_env{$item} = $data{$item}; |
} |
} |
} |
} |
&logout($r,$ip,$handle,\%data,\%linkprot_env); |
&logout($r,$ip,$handle,\%data,undef,\%linkprot_env); |
return OK; |
return OK; |
} |
} |
&Apache::lonnet::appenv({'request.linkprot' => $data{'linkprot'}}); |
&Apache::lonnet::appenv({'request.linkprot' => $data{'linkprot'}}); |
Line 883 sub handler {
|
Line 902 sub handler {
|
my %info; |
my %info; |
if ($env{'request.linkprot'}) { |
if ($env{'request.linkprot'}) { |
$info{'linkprot'} = $env{'request.linkprot'}; |
$info{'linkprot'} = $env{'request.linkprot'}; |
|
if ($data{'linkprotuser'}) { |
|
$info{'linkprotuser'} = $data{'linkprotuser'}; |
|
} |
} elsif ($env{'request.linkkey'} ne '') { |
} elsif ($env{'request.linkkey'} ne '') { |
$info{'linkkey'} = $env{'request.linkkey'}; |
$info{'linkkey'} = $env{'request.linkkey'}; |
} |
} |
Line 891 sub handler {
|
Line 913 sub handler {
|
$info{'checklaunch'} = 1; |
$info{'checklaunch'} = 1; |
} |
} |
my $token = &Apache::lonnet::tmpput(\%info,$r->dir_config('lonHostID'),'link'); |
my $token = &Apache::lonnet::tmpput(\%info,$r->dir_config('lonHostID'),'link'); |
unless (($token eq 'con_lost') || ($token eq 'refused') || |
unless (($token eq 'con_lost') || ($token eq 'refused') || ($token =~ /^error:/) || |
($token eq 'unknown_cmd') || ($token eq 'no_such_host')) { |
($token eq 'unknown_cmd') || ($token eq 'no_such_host')) { |
$dest .= (($dest =~ /\?/) ? '&' : '?') . 'ttoken='.$token; |
$dest .= (($dest =~ /\?/) ? '&' : '?') . 'ttoken='.$token; |
} |
} |
Line 935 sub handler {
|
Line 957 sub handler {
|
'request.linkprot' => $data{'linkprot'}}; |
'request.linkprot' => $data{'linkprot'}}; |
} |
} |
} |
} |
|
if ($data{'linkprotuser'} ne '') { |
|
$form{'linkprotuser'} = $data{'linkprotuser'}; |
|
} |
} elsif ($data{'linkkey'} ne '') { |
} elsif ($data{'linkkey'} ne '') { |
if (ref($extra_env) eq 'HASH') { |
if (ref($extra_env) eq 'HASH') { |
$extra_env->{'user.deeplinkkey'} = $data{'linkkey'}; |
$extra_env->{'user.deeplinkkey'} = $data{'linkkey'}; |
Line 999 sub handler {
|
Line 1024 sub handler {
|
} elsif ($data{'origurl'} =~ m{^/tiny/$match_domain/\w+$}) { |
} elsif ($data{'origurl'} =~ m{^/tiny/$match_domain/\w+$}) { |
$next_url=$data{'origurl'}; |
$next_url=$data{'origurl'}; |
} else { |
} else { |
$next_url='/adm/roles?selectrole=1&'.&escape($data{'role'}).'=1'; |
if ($data{'lti.login'}) { |
if ($data{'origurl'} ne '') { |
$next_url='/adm/roles?selectrole=1&'.&escape($data{'role'}).'=1'; |
$next_url .= '&orgurl='.&escape($data{'origurl'}); |
if ($data{'origurl'} ne '') { |
|
$next_url .= '&orgurl='.&escape($data{'origurl'}); |
|
} |
|
} else { |
|
$next_url='/adm/roles?selectrole=1&'.&escape($data{'role'}).'=1'; |
|
if ($data{'origurl'} ne '') { |
|
$next_url .= '&orgurl='.&escape($data{'origurl'}); |
|
} |
} |
} |
} |
} |
if ($data{'lti.login'}) { |
if ($data{'lti.login'}) { |
if (($data{'origurl'} =~ m{/default_\d+\.sequence$}) || |
if (($data{'origurl'} =~ m{/default_\d+\.sequence$}) || |
($data{'origurl'} =~ m{^/res/.+\.sequence$})) { |
($data{'origurl'} =~ m{^/res/.+\.sequence$})) { |
$next_url .= '&navmap=1'; |
if ($reuse_session) { |
|
$next_url .= '&navmap=1'; |
|
} else { |
|
$next_url .= '&navmap=1'; |
|
} |
} |
} |
} |
} |
if ($reuse_session) { |
if ($reuse_session) { |
Line 1021 sub handler {
|
Line 1057 sub handler {
|
} |
} |
if ($data{'linkprot'}) { |
if ($data{'linkprot'}) { |
$extra_env->{'request.linkprot'} = $data{'linkprot'}; |
$extra_env->{'request.linkprot'} = $data{'linkprot'}; |
|
if ($data{'linkprotuser'}) { |
|
$form{'request.linkprotuser'} = $data{'linkprotuser'}; |
|
} |
} elsif ($data{'linkkey'} ne '') { |
} elsif ($data{'linkkey'} ne '') { |
$extra_env->{'request.linkkey'} = $data{'linkkey'}; |
$extra_env->{'request.linkkey'} = $data{'linkkey'}; |
} |
} |