--- loncom/auth/migrateuser.pm 2018/12/26 20:10:21 1.42 +++ loncom/auth/migrateuser.pm 2019/01/27 16:02:43 1.43 @@ -1,7 +1,7 @@ # The LearningOnline Network # Starts a user off based of an existing token. # -# $Id: migrateuser.pm,v 1.42 2018/12/26 20:10:21 raeburn Exp $ +# $Id: migrateuser.pm,v 1.43 2019/01/27 16:02:43 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -674,6 +674,9 @@ sub handler { $handle); if ($data{'linkprot'} ne '') { my ($linkprotector,$deeplink) = split(/:/,$data{'linkprot'},2); + if ($deeplink ne '') { + &Apache::lonnet::appenv({'request.deeplink.login' => $deeplink}); + } if ($env{'user.linkprotector'}) { my @protectors = split(/,/,$env{'user.linkprotector'}); unless (grep(/^\Q$linkprotector\E$/,@protectors)) { @@ -683,7 +686,7 @@ sub handler { } } else { &Apache::lonnet::appenv({'user.linkprotector' => $linkprotector }); - } + } if ($env{'user.linkproturi'}) { my @proturis = split(/,/,$env{'user.linkproturi'}); unless(grep(/^\Q$deeplink\E$/,@proturis)) { @@ -694,6 +697,30 @@ sub handler { } else { &Apache::lonnet::appenv({'user.linkproturi' => $deeplink}); } + } elsif ($data{'deeplink.login'}) { + my $deeplink = $data{'deeplink.login'}; + if ($data{'linkkey'}) { + my $linkkey = $data{'linkkey'}; + if ($env{'user.deeplinkkey'}) { + my @linkkeys = split(/,/,$env{'user.deeplinkkey'}); + unless (grep(/^\Q$linkkey\E$/,@linkkeys)) { + push(@linkkeys,$linkkey); + &Apache::lonnet::appenv({'user.deeplinkkey' => join(',',sort(@linkkeys))}); + } + } else { + &Apache::lonnet::appenv({'user.deeplinkkey' => $linkkey}); + } + if ($env{'user.keyedlinkuri'}) { + my @keyeduris = split(/,/,$env{'user.keyedlinkuri'}); + unless (grep(/^\Q$deeplink\E$/,@keyeduris)) { + push(@keyeduris,$deeplink); + &Apache::lonnet::appenv({'user.keyedlinkuri' => join(',',sort(@keyeduris))}); + } + } else { + &Apache::lonnet::appenv({'user.keyedlinkuri' => $deeplink}); + } + } + &Apache::lonnet::appenv({'request.deeplink.login' => $data{'deeplink.login'}}); } if ($data{'lti.login'}) { my $needslogout; @@ -799,6 +826,21 @@ sub handler { 'user.linkproturi' => $linkuri,}; } } + } elsif ($data{'deeplink.login'}) { + if ($data{'linkkey'}) { + if (ref($extra_env) eq 'HASH') { + $extra_env->{'user.deeplinkkey'} = $data{'linkkey'}; + $extra_env->{'user.keyedlinkuri'} = $data{'deeplink.login'}, + } else { + $extra_env = {'user.deeplinkkey' => $data{'linkkey'}, + 'user.keyedlinkuri' => $data{'deeplink.login'}}; + } + } + if (ref($extra_env) eq 'HASH') { + $extra_env->{'request.deeplink.login' => $data{'deeplink.login'}}; + } else { + $extra_env = {'request.deeplink.login' => $data{'deeplink.login'}}; + } } } my $skipcritical;