--- loncom/auth/lonrelaunch.pm 2022/06/18 02:10:18 1.1 +++ loncom/auth/lonrelaunch.pm 2022/06/26 04:03:47 1.2 @@ -1,7 +1,7 @@ # The LearningOnline Network # Re-launch guidance for deep linked access with username mismatch # -# $Id: lonrelaunch.pm,v 1.1 2022/06/18 02:10:18 raeburn Exp $ +# $Id: lonrelaunch.pm,v 1.2 2022/06/26 04:03:47 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -45,7 +45,6 @@ sub handler { &Apache::loncommon::get_unprocessed_cgi($r->args,['rtoken']); if (exists($env{'form.rtoken'})) { %data = &Apache::lonnet::tmpget($env{'form.rtoken'}); - my $delete = &Apache::lonnet::tmpdel($env{'form.rtoken'}); } } my $handle = &Apache::lonnet::check_for_valid_session($r); @@ -85,22 +84,34 @@ sub handler { if ((keys(%data)) && ($data{'origurl'} =~ m{^/tiny/$match_domain/\w+$})) { my $url = $data{'origurl'}; - if (($data{'linkprot'} =~ m{^\w+(c|d):\Q$url\E$}) && - ($data{'linkprotuser'} =~ m{^($match_username):($match_domain)$})) { - my $brcrum = [{'href' => '','text' => 'Update session'},]; - $url .= '?ltoken='.$env{'form.rtoken'}; - $r->print(&Apache::loncommon::start_page('Updating session',undef, - {'only_body' => 1, - 'redirect' => [1,$url], - 'bread_crumbs' => $brcrum,}). - '

'.&mt('Updating old session information').'

'. - &Apache::loncommon::end_page()); + if ($data{'linkprot'} =~ m{^\w+(c|d):\Q$url\E$}) { + if ((!exists($data{'linkprotuser'})) || + (($data{'linkprotuser'}) && + ($data{'linkprotuser'} =~ m{^($match_username):($match_domain)$}))) { + $url .= '?ltoken='.$env{'form.rtoken'}; + $r->print(&Apache::loncommon::start_page('Updating session',undef, + {'only_body' => 1, + 'redirect' => [1,$url]}). + '

'.&mt('Updating old session information').'

'. + &Apache::loncommon::end_page()); return OK; } } - $r->print(&Apache::loncommon::start_page('Username mismatch',undef,{'only_body' => 1})); - $r->print(&mt('Although your credentials were authenticated, the username you entered did not match what was expected [_1] from the link you followed',"($data{'linkprotuser'})")); + if ($data{'linkprot'}) { + $r->print(&Apache::loncommon::start_page('Updating session',undef,{'only_body' => 1})); + if ($data{'linkprotuser'} ne '') { + $r->print(&mt('Although your credentials were authenticated, the username you entered did not match what was expected [_1] from the link you followed',"($data{'linkprotuser'})")); + } else { + $r->print(&mt('Expired any existing session')); + } + } else { + $r->print(&Apache::loncommon::start_page('Session removed',undef,{'only_body' => 1})); + $r->print(&mt('Expired any existing session')); + } $r->print(&Apache::loncommon::end_page()); + if (exists($env{'form.rtoken'})) { + &Apache::lonnet::tmpdel($env{'form.rtoken'}); + } return OK; }