--- loncom/auth/lonauth.pm 2022/08/24 20:58:50 1.177 +++ loncom/auth/lonauth.pm 2022/09/17 23:38:50 1.178 @@ -1,7 +1,7 @@ # The LearningOnline Network # User Authentication Module # -# $Id: lonauth.pm,v 1.177 2022/08/24 20:58:50 raeburn Exp $ +# $Id: lonauth.pm,v 1.178 2022/09/17 23:38:50 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -147,6 +147,10 @@ sub success { $destination .= 'selectrole=1&'.$newrole.'=1'; } } + } elsif (defined($form->{display})) { + if ($destination =~ m{^/adm/email($|\?)}) { + $destination .= ($destination =~ /\?/) ? '&' : '?' .'display='.&escape($form->{display}); + } } if (defined($form->{symb})) { my $destsymb = $form->{symb}; @@ -829,6 +833,11 @@ sub handler { } if ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) { &set_deeplink_login(%form); + } elsif ($firsturl eq '/adm/email') { + if ($form{'display'} && ($form{'mailrecip'} eq "$form{'uname'}:$form{'udom'}")) { + $env{'request.display'} = $form{'display'}; + $env{'request.mailrecip'} = $form{'mailrecip'}; + } } $r->internal_redirect($switchto); } else { @@ -865,6 +874,11 @@ sub handler { } if ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) { &set_deeplink_login(%form); + } elsif ($firsturl eq '/adm/email') { + if ($form{'display'} && ($form{'mailrecip'} eq "$form{'uname'}:$form{'udom'}")) { + $env{'request.display'} = $form{'display'}; + $env{'request.mailrecip'} = $form{'mailrecip'}; + } } $r->internal_redirect($switchto); } else { @@ -904,6 +918,11 @@ sub handler { } if ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) { &set_deeplink_login(%form); + } elsif ($firsturl eq '/adm/email') { + if ($form{'display'} && ($form{'mailrecip'} eq "$form{'uname'}:$form{'udom'}")) { + $env{'request.display'} = $form{'display'}; + $env{'request.mailrecip'} = $form{'mailrecip'}; + } } $r->internal_redirect('/adm/switchserver?otherserver='.$unloaded.'&origurl='.$firsturl); return OK; @@ -923,6 +942,14 @@ sub handler { $form{$item} = $sessiondata{$item}; } } + if ($sessiondata{'origurl'} eq '/adm/email') { + if (($sessiondata{'display'}) && ($sessiondata{'mailrecip'})) { + if (&unescape($sessiondata{'mailrecip'}) eq "$form{'uname'}:$form{'udom'}") { + $form{'display'} = &unescape($sessiondata{'display'}); + $form{'mailrecip'} = &unescape($sessiondata{'mailrecip'}); + } + } + } } } if ($form{'linkprot'}) { @@ -1121,6 +1148,11 @@ sub check_can_host { $form); if ($form->{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) { $env{'request.deeplink.login'} = $form->{'firsturl'}; + } elsif ($form->{'firsturl'} eq '/adm/email') { + if ($form->{'display'} && ($form->{'mailrecip'} eq $form->{'uname'}.':'.$form->{'udom'})) { + $env{'request.display'} = $form->{'mailrecip'}; + $env{'request.mailrecip'} = $form->{'mailrecip'}; + } } if ($form->{'linkprot'}) { $env{'request.linkprot'} = $form->{'linkprot'};