--- loncom/auth/lonlogin.pm 2012/04/11 11:40:07 1.150
+++ loncom/auth/lonlogin.pm 2013/11/26 03:17:09 1.158
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Login Screen
#
-# $Id: lonlogin.pm,v 1.150 2012/04/11 11:40:07 goltermann Exp $
+# $Id: lonlogin.pm,v 1.158 2013/11/26 03:17:09 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,15 +103,23 @@ 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;
- my $httpbrowser=$ENV{"HTTP_USER_AGENT"};
+ (undef,undef,undef,undef,undef,undef,my $clientmobile) =
+ &Apache::loncommon::decode_user_agent();
my $iconpath=
&Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));
@@ -119,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');
@@ -141,9 +155,20 @@ 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 {
+ $env{'form.username'} = &Apache::loncommon::cleanup_html($env{'form.username'});
+ $authusername=($env{'form.username'}?$env{'form.username'}:'');
+ }
+ if ($sessiondata{'domain'}) {
+ $authdomain=$sessiondata{'domain'};
+ } else {
+ $env{'form.domain'} = &Apache::loncommon::cleanup_html($env{'form.domain'});
+ $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain);
+ }
# ---------------------------------------------------------- Determine own load
my $loadavg;
@@ -229,23 +254,23 @@ sub handler {
if ($spares) {
$spares.= '
';
}
-my %all_hostnames = &Apache::lonnet::all_hostnames();
-foreach my $hostid (sort
+ my %all_hostnames = &Apache::lonnet::all_hostnames();
+ foreach my $hostid (sort
{
&Apache::lonnet::hostname($a) cmp
&Apache::lonnet::hostname($b);
}
keys(%all_hostnames)) {
- next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});
- my $hostname = &Apache::lonnet::hostname($hostid);
- next if (($last eq $hostname) || ($hostname eq ''));
- $spares.='
'.
- $hostname.'';
- $last=$hostname;
-}
-$r->print(
+ next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});
+ my $hostname = &Apache::lonnet::hostname($hostid);
+ next if (($last eq $hostname) || ($hostname eq ''));
+ $spares.='
'.
+ $hostname.'';
+ $last=$hostname;
+ }
+ $r->print(
''
.'
'.&mt('Please attempt to login to one of the following servers:') - .'
' - .$spares); - } - $r->print('' - .'' - ); -return OK; -} + if ($spares) { + $r->print(''.&mt('Please attempt to login to one of the following servers:') + .'
' + .$spares); + } + $r->print('