--- loncom/auth/lonauth.pm 2022/08/30 12:10:43 1.121.2.24.2.5 +++ loncom/auth/lonauth.pm 2023/01/23 00:38:50 1.121.2.24.2.6 @@ -1,7 +1,7 @@ # The LearningOnline Network # User Authentication Module # -# $Id: lonauth.pm,v 1.121.2.24.2.5 2022/08/30 12:10:43 raeburn Exp $ +# $Id: lonauth.pm,v 1.121.2.24.2.6 2023/01/23 00:38:50 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -116,6 +116,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}; @@ -759,6 +763,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 { @@ -795,6 +804,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 { @@ -834,6 +848,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; @@ -853,6 +872,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'}) { @@ -1051,6 +1078,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'};