--- loncom/auth/lonlogin.pm 2013/09/13 21:28:18 1.156 +++ loncom/auth/lonlogin.pm 2013/09/29 00:49:24 1.157 @@ -1,7 +1,7 @@ # The LearningOnline Network # Login Screen # -# $Id: lonlogin.pm,v 1.156 2013/09/13 21:28:18 raeburn Exp $ +# $Id: lonlogin.pm,v 1.157 2013/09/29 00:49:24 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,7 +46,7 @@ sub handler { (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'}, $ENV{'REDIRECT_QUERY_STRING'}), ['interface','username','domain','firsturl','localpath','localres', - 'token','role','symb']); + 'token','role','symb','iptoken']); if (!defined($env{'form.firsturl'})) { &Apache::lonacc::get_posted_cgi($r,['firsturl']); } @@ -103,11 +103,18 @@ sub handler { # ---------------------------------------------------- No valid token, continue - # ---------------------------- Not possible to really login to domain "public" +# ---------------------------- Not possible to really login to domain "public" if ($env{'form.domain'} eq 'public') { $env{'form.domain'}=''; $env{'form.username'}=''; } + +# ------ Is this page requested because /adm/migrateuser detected an IP change? + my %sessiondata; + if ($env{'form.iptoken'}) { + %sessiondata = &Apache::lonnet::tmpget($env{'form.iptoken'}); + my $delete = &Apache::lonnet::tmpdel($env{'form.token'}); + } # ----------------------------------------------------------- Process Interface $env{'form.interface'}=~s/\W//g; @@ -120,17 +127,23 @@ sub handler { my $lonhost = $r->dir_config('lonHostID'); my $domain = &Apache::lonnet::default_login_domain(); if ($lonhost ne '') { - my $redirect = &check_loginvia($domain,$lonhost); - if ($redirect) { - $r->print($redirect); - return OK; - } + unless ($sessiondata{'sessionserver'}) { + my $redirect = &check_loginvia($domain,$lonhost); + if ($redirect) { + $r->print($redirect); + return OK; + } + } } - if (($env{'form.domain'}) && + if (($sessiondata{'domain'}) && + (&Apache::lonnet::domain($env{'form.domain'},'description'))) { + $domain=$sessiondata{'domain'}; + } elsif (($env{'form.domain'}) && (&Apache::lonnet::domain($env{'form.domain'},'description'))) { $domain=$env{'form.domain'}; } + my $role = $r->dir_config('lonRole'); my $loadlim = $r->dir_config('lonLoadLim'); my $uloadlim= $r->dir_config('lonUserLoadLim'); @@ -142,9 +155,18 @@ sub handler { my $host_name = &Apache::lonnet::hostname($lonhost); # --------------------------------------------- Default values for login fields - - my $authusername=($env{'form.username'}?$env{'form.username'}:''); - my $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain); + + my ($authusername,$authdomain); + if ($sessiondata{'username'}) { + $authusername=$sessiondata{'username'}; + } else { + $authusername=($env{'form.username'}?$env{'form.username'}:''); + } + if ($sessiondata{'domain'}) { + $authdomain=$sessiondata{'domain'}; + } else { + $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain); + } # ---------------------------------------------------------- Determine own load my $loadavg;