Diff for /loncom/auth/lonauth.pm between versions 1.108 and 1.112

version 1.108, 2010/08/18 19:25:12 version 1.112, 2011/05/13 01:33:02
Line 40  use Apache::lonmenu(); Line 40  use Apache::lonmenu();
 use Apache::createaccount;  use Apache::createaccount;
 use Fcntl qw(:flock);  use Fcntl qw(:flock);
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::File ();
 use HTML::Entities;  use HTML::Entities;
     
 # ------------------------------------------------------------ Successful login  # ------------------------------------------------------------ Successful login
Line 81  sub success { Line 82  sub success {
         my $now=time;          my $now=time;
         my $then=$env{'user.login.time'};          my $then=$env{'user.login.time'};
         my $refresh=$env{'user.refresh.time'};          my $refresh=$env{'user.refresh.time'};
           my $update=$env{'user.update.time'};
           if (!$update) {
               $update = $then;
           }
         if (exists($env{$envkey})) {          if (exists($env{$envkey})) {
             my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus);              my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus);
             &Apache::lonnet::role_status($envkey,$then,$refresh,$now,\$role,\$where,              &Apache::lonnet::role_status($envkey,$update,$refresh,$now,\$role,\$where,
                                          \$trolecode,\$tstatus,\$tstart,\$tend);                                           \$trolecode,\$tstatus,\$tstart,\$tend);
             if ($tstatus eq 'is') {              if ($tstatus eq 'is') {
                 $destination  .= ($destination =~ /\?/) ? '&' : '?';                  $destination  .= ($destination =~ /\?/) ? '&' : '?';
Line 110  sub success { Line 115  sub success {
             $destination .= '&destinationurl='.$destsymb;              $destination .= '&destinationurl='.$destsymb;
         }          }
     }      }
       if ($destination =~ m{^/adm/roles}) {
           $destination  .= ($destination =~ /\?/) ? '&' : '?';
           $destination .= 'source=login';
       }
   
     my $windowinfo = Apache::lonhtmlcommon::scripttag('self.name="loncapaclient";');      my $windowinfo = Apache::lonhtmlcommon::scripttag('self.name="loncapaclient";');
     my $header = '<meta HTTP-EQUIV="Refresh" CONTENT="0; url='.$destination.'" />';      my $header = '<meta HTTP-EQUIV="Refresh" CONTENT="0; url='.$destination.'" />';
Line 129  sub success { Line 138  sub success {
   
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
        'wel' => 'Welcome',         'wel' => 'Welcome',
        'mes' => 'Welcome to the Learning<i>Online</i> Network with CAPA. Please wait while your session is being set up.',  
        'pro' => 'Login problems?',         'pro' => 'Login problems?',
        'log' => 'loginproblems.html',         'log' => 'loginproblems.html',
        );         );
       my $welcome = &mt('Welcome to the Learning[_1]Online[_2] Network with CAPA. Please wait while your session is being set up.','<i>','</i>'); 
     $r->print(<<ENDSUCCESS);      $r->print(<<ENDSUCCESS);
 $start_page  $start_page
 $windowinfo  $windowinfo
 <h1>$lt{'wel'}</h1>  <h1>$lt{'wel'}</h1>
 $lt{'mes'}<p>  $welcome<p>
 <a href="/adm/$lt{'log'}">$lt{'pro'}</a></p>  <a href="/adm/$lt{'log'}">$lt{'pro'}</a></p>
 $continuelink  $continuelink
 $end_page  $end_page
Line 351  sub handler { Line 360  sub handler {
             &Apache::lonnet::get_dom('configuration',['usercreation'],$form{'udom'});              &Apache::lonnet::get_dom('configuration',['usercreation'],$form{'udom'});
         if (grep(/^login$/,@cancreate)) {          if (grep(/^login$/,@cancreate)) {
             my $domdesc = &Apache::lonnet::domain($form{'udom'},'description');              my $domdesc = &Apache::lonnet::domain($form{'udom'},'description');
             &check_can_host($r,\%form,'no_account_on_host',$domdesc);              unless (&check_can_host($r,\%form,'no_account_on_host',$domdesc)) {
                   return OK;
               }
             my $start_page =               my $start_page = 
                 &Apache::loncommon::start_page('Create a user account in LON-CAPA');                  &Apache::loncommon::start_page('Create a user account in LON-CAPA');
             my $lonhost = $r->dir_config('lonHostID');              my $lonhost = $r->dir_config('lonHostID');
Line 403  sub handler { Line 414  sub handler {
  }   }
     }      }
   
     &check_can_host($r,\%form,$authhost);      unless (&check_can_host($r,\%form,$authhost)) {
           return OK;
       }
   
     if ($r->dir_config("lonBalancer") eq 'yes') {      if ($r->dir_config("lonBalancer") eq 'yes') {
  &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',undef,   &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',undef,
  \%form);   \%form);
         my ($otherserver) = &Apache::lonnet::choose_server($form{'udom'});          my ($otherserver) = &Apache::lonnet::choose_server($form{'udom'});
  $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);   $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver.'&origurl='.$firsturl);
           return OK;
     } else {      } else {
  &success($r,$form{'uname'},$form{'udom'},$authhost,$firsturl,undef,  # ------------------------------------------------------- Do the load balancing
  \%form);  
   # ---------------------------------------------------------- Determine own load
           my $loadlim = $r->dir_config('lonLoadLim');
           my $loadavg;
           {
               my $loadfile=Apache::File->new('/proc/loadavg');
               $loadavg=<$loadfile>;
           }
           $loadavg =~ s/\s.*//g;
           my $loadpercent=sprintf("%.1f",100*$loadavg/$loadlim);
           my $userloadpercent=&Apache::lonnet::userload();
   
   # ---------------------------------------------------------- Are we overloaded?
           if ((($userloadpercent>100.0)||($loadpercent>100.0))) {
               my $unloaded=Apache::lonnet::spareserver($loadpercent,$userloadpercent,1,$form{'udom'});
               if ($unloaded) {
                   &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',
                            undef,\%form);
                   $r->internal_redirect('/adm/switchserver?otherserver='.$unloaded.'&origurl='.$firsturl);
                   return OK;
               }
           }
           &success($r,$form{'uname'},$form{'udom'},$authhost,$firsturl,undef,
                    \%form);
           return OK;
     }      }
     return OK;  
 }  }
   
 sub check_can_host {  sub check_can_host {
Line 469  sub check_can_host { Line 506  sub check_can_host {
                           '<p>'.&mt('Currently a LON-CAPA server is not available within the [_1] domain for you to log-in to, to create an account.',$domdesc).'</p>'.                            '<p>'.&mt('Currently a LON-CAPA server is not available within the [_1] domain for you to log-in to, to create an account.',$domdesc).'</p>'.
                           &Apache::loncommon::end_page());                            &Apache::loncommon::end_page());
             }              }
             return OK;  
         } else {          } else {
             &success($r,$form->{'uname'},$udom,$authhost,'noredirect',undef,              &success($r,$form->{'uname'},$udom,$authhost,'noredirect',undef,
                      $form);                       $form);
Line 477  sub check_can_host { Line 513  sub check_can_host {
             $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);              $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);
         }          }
     }      }
       return $canhost;
 }  }
   
 1;  1;

Removed from v.1.108  
changed lines
  Added in v.1.112


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>