--- loncom/auth/lonlogin.pm 2022/08/30 12:28:08 1.158.2.13.2.7 +++ loncom/auth/lonlogin.pm 2023/01/23 00:52:44 1.158.2.13.2.8 @@ -1,7 +1,7 @@ # The LearningOnline Network # Login Screen # -# $Id: lonlogin.pm,v 1.158.2.13.2.7 2022/08/30 12:28:08 raeburn Exp $ +# $Id: lonlogin.pm,v 1.158.2.13.2.8 2023/01/23 00:52:44 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -50,7 +50,7 @@ sub handler { $ENV{'REDIRECT_QUERY_STRING'}), ['interface','username','domain','firsturl','localpath','localres', 'token','role','symb','iptoken','btoken','ltoken','ttoken','linkkey', - 'saml','sso','retry']); + 'saml','sso','retry','display']); # -- check if they are a migrating user if (defined($env{'form.token'})) { @@ -175,6 +175,19 @@ sub handler { if ($env{'form.symb'}) { $info{'symb'} = $env{'form.symb'}; } + if (($env{'form.firsturl'} eq '/adm/email') && ($env{'form.display'} ne '')) { + if ($env{'form.sso'}) { + if ($env{'form.mailrecip'}) { + $info{'display'} = &escape($env{'form.display'}); + $info{'mailrecip'} = &escape($env{'form.mailrecip'}); + } + } else { + if (($env{'form.username'}) && ($env{'form.domain'})) { + $info{'display'} = &escape($env{'form.display'}); + $info{'mailrecipient'} = &escape($env{'form.username'}.':'.$env{'form.domain'}); + } + } + } my $balancer_token = &Apache::lonnet::tmpput(\%info,$found_server); unless (($balancer_token eq 'con_lost') || ($balancer_token eq 'refused') || ($balancer_token eq 'unknown_cmd') || ($balancer_token eq 'no_such_host')) { @@ -228,6 +241,11 @@ sub handler { $balcookie = $info{'balcookie'}; &Apache::lonnet::tmpdel($env{'form.btoken'}); delete($env{'form.btoken'}); + if (($env{'form.firsturl'} eq '/adm/email') && + (exists($info{'display'})) && (exists($info{'mailrecip'}))) { + $env{'form.display'} = &unescape($info{'display'}); + $env{'form.mailrecip'} = &unescape($info{'mailrecip'}); + } } # @@ -339,6 +357,17 @@ sub handler { if ($env{'form.ltoken'}) { my $delete = &Apache::lonnet::tmpdel($env{'form.ltoken'}); } + if (($env{'form.firsturl'} eq '/adm/email') && ($env{'form.display'})) { + if ($env{'form.mailrecip'}) { + if ($env{'form.mailrecip'} eq "$env{'user.name'}:$env{'user.domain'}") { + $dest .= (($dest=~/\?/)?'&':'?') . 'display='.&escape($env{'form.display'}). + '&mailrecip='.&escape($env{'form.mailrecip'}); + } + } elsif (($env{'form.username'} eq $env{'user.name'}) && ($env{'form.domain'} eq $env{'user.domain'})) { + $dest .= (($dest=~/\?/)?'&':'?') . 'display='.&escape($env{'form.display'}). + '&mailrecip='.&escape("$env{'user.name'}:$env{'form.domain'}"); + } + } $r->print( $start_page .'

'.&mt('You are already logged in!').'

' @@ -464,7 +493,7 @@ sub handler { # -------------------------------------------------------- Store away log token my ($tokenextras,$tokentype,$linkprot_for_login); - my @names = ('role','symb','iptoken','ltoken','linkprotuser','linkprotexit','linkprot','linkkey'); + my @names = ('role','symb','iptoken','ltoken','linkprotuser','linkprotexit','linkprot','linkkey','display'); foreach my $name (@names) { if ($env{'form.'.$name} ne '') { if ($name eq 'ltoken') { @@ -480,6 +509,16 @@ sub handler { $tokentype = 'link'; last; } + } elsif ($env{'form.display'} && ($env{'form.firsturl'} eq '/adm/email')) { + if (($env{'form.mailrecip'}) || + ($env{'form.username'} =~ /^$match_username$/) && ($env{'form.domain'} =~ /^$match_domain$/)) { + $tokenextras .= '&'.$name.'='.&escape($env{'form.display'}); + if ($env{'form.mailrecip'}) { + $tokenextras .= '&mailrecip='.&escape($env{'form.mailrecip'}); + } else { + $tokenextras .= '&mailrecip='.&escape($env{'form.username'}.':'.$env{'form.domain'}); + } + } } else { $tokenextras .= '&'.$name.'='.&escape($env{'form.'.$name}); if (($name eq 'linkkey') || ($name eq 'linkprot')) {