Diff for /loncom/auth/lonauth.pm between versions 1.101.4.2 and 1.101.8.5

version 1.101.4.2, 2010/05/23 21:20:11 version 1.101.8.5, 2010/09/24 00:01:44
Line 116  sub success { Line 116  sub success {
     my $remoteinfo=&Apache::lonmenu::load_remote_msg($lowerurl);      my $remoteinfo=&Apache::lonmenu::load_remote_msg($lowerurl);
     my $setflags=&Apache::lonmenu::setflags();      my $setflags=&Apache::lonmenu::setflags();
     my $maincall=&Apache::lonmenu::maincall();      my $maincall=&Apache::lonmenu::maincall();
       my $brcrum = [{'href' => '',
                      'text' => 'Successful Login'},];
     my $start_page=&Apache::loncommon::start_page('Successful Login',      my $start_page=&Apache::loncommon::start_page('Successful Login',
                                                   $startupremote,                                                    $startupremote,
                                                   {'no_inline_link' => 1,});                                                    {'no_inline_link' => 1,
                                                      'bread_crumbs' => $brcrum,});
     my $end_page  =&Apache::loncommon::end_page();      my $end_page  =&Apache::loncommon::end_page();
   
     my $continuelink;      my $continuelink;
     if (($env{'browser.interface'} eq 'textual') ||      if ($env{'environment.remote'} eq 'off') {
         ($env{'environment.remote'} eq 'off')) {  
  $continuelink='<a href="'.$destination.'">'.&mt('Continue').'</a>';   $continuelink='<a href="'.$destination.'">'.&mt('Continue').'</a>';
     }      }
 # ------------------------------------------------- Output for successful login  # ------------------------------------------------- Output for successful login
Line 214  sub handler { Line 216  sub handler {
         } else {          } else {
 # Indeed, a valid token is found  # Indeed, a valid token is found
             &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);              &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
     &Apache::loncommon::content_type($r,'text/html');              &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;              $r->send_http_header;
     my $start_page =               my $start_page =
         &Apache::loncommon::start_page('Already logged in');                  &Apache::loncommon::start_page('Already logged in');
     my $end_page =               my $end_page =
         &Apache::loncommon::end_page();                  &Apache::loncommon::end_page();
             my $dest = '/adm/roles';              my $dest = '/adm/roles';
             if ($env{'form.firsturl'} ne '') {              if ($env{'form.firsturl'} ne '') {
                 $dest = $env{'form.firsturl'};                  $dest = $env{'form.firsturl'};
             }              }
             $r->print(              $r->print(
                 $start_page                 $start_page
                .'<h1>'.&mt('You are already logged in!').'</h1>'                .'<h1>'.&mt('You are already logged in!').'</h1>'
                .'<p>'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].'                .'<p>'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].'
                         ,'<a href="'.$dest.'">','</a>','<a href="/adm/logout">','</a>')                      ,'<a href="'.$dest.'">','</a>','<a href="/adm/logout">','</a>')
               .'</p>'                .'</p>'
               .$end_page                .$end_page
             );              );
Line 344  sub handler { Line 346  sub handler {
     if (grep(/^login$/,@cancreate)) {      if (grep(/^login$/,@cancreate)) {
         $defaultauth = 1;          $defaultauth = 1;
     }      }
       my $clientcancheckhost = 1;
     my $authhost=Apache::lonnet::authenticate($form{'uname'},$upass,      my $authhost=Apache::lonnet::authenticate($form{'uname'},$upass,
                                               $form{'udom'},$defaultauth);                                                $form{'udom'},$defaultauth,
                                                 $clientcancheckhost);
           
 # --------------------------------------------------------------------- Failed?  # --------------------------------------------------------------------- Failed?
   
Line 357  sub handler { Line 361  sub handler {
         my %domconfig =           my %domconfig = 
             &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');
               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',
                                                '',{'no_inline_link'   => 1,});                                                 '',{'no_inline_link'   => 1,});
             my $domdesc = &Apache::lonnet::domain($form{'udom'},'description');  
             my $lonhost = $r->dir_config('lonHostID');              my $lonhost = $r->dir_config('lonHostID');
             my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};              my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
             my $contacts =               my $contacts = 
Line 410  sub handler { Line 417  sub handler {
  }   }
     }      }
   
       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);
  $r->internal_redirect('/adm/switchserver');          my ($otherserver) = &Apache::lonnet::choose_server($form{'udom'});
    $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;
       }
   }
   
   sub check_can_host {
       my ($r,$form,$authhost,$domdesc) = @_;
       return unless (ref($form) eq 'HASH');
       my $canhost = 1;
       my $lonhost = $r->dir_config('lonHostID');
       my $udom = $form->{'udom'};
       my @intdoms;
       my $internet_names = &Apache::lonnet::get_internet_names($lonhost);
       if (ref($internet_names) eq 'ARRAY') {
           @intdoms = @{$internet_names};
       }
       my $uprimary_id = &Apache::lonnet::domain($udom,'primary');
       my $uint_dom = &Apache::lonnet::internet_dom($uprimary_id);
       unless ($uint_dom ne '' && grep(/^\Q$uint_dom\E$/,@intdoms)) {
           my $machine_dom = &Apache::lonnet::host_domain($lonhost);
           my $hostname = &Apache::lonnet::hostname($lonhost);
           my $serverhomeID = &Apache::lonnet::get_server_homeID($hostname);
           my $serverhomedom = &Apache::lonnet::host_domain($serverhomeID);
           my %defdomdefaults = &Apache::lonnet::get_domain_defaults($serverhomedom);
           my %udomdefaults = &Apache::lonnet::get_domain_defaults($udom);
           my $loncaparev;
           if ($authhost eq 'no_account_on_host') {
               $loncaparev = &Apache::lonnet::get_server_loncaparev($machine_dom);
           } else {
               $loncaparev = &Apache::lonnet::get_server_loncaparev($machine_dom,$lonhost);
           }
           $canhost = &Apache::lonnet::can_host_session($udom,$lonhost,$loncaparev,
                                                        $udomdefaults{'remotesessions'},
                                                        $defdomdefaults{'hostedsessions'});
       }
       unless ($canhost) {
           if ($authhost eq 'no_account_on_host') {
               my ($login_host,$hostname) = &Apache::lonnet::choose_server($udom);
               &Apache::loncommon::content_type($r,'text/html');
               $r->send_http_header;
               if ($login_host ne '') {
                   my $protocol = $Apache::lonnet::protocol{$login_host};
                   $protocol = 'http' if ($protocol ne 'https');
                   my $newurl = $protocol.'://'.$hostname.'/adm/createaccount';
                   $r->print(&Apache::loncommon::start_page('Create a user account in LON-CAPA').
                             '<h3>'.&mt('Account creation').'</h3>'.
                             &mt('You do not currently have a LON-CAPA account at this institution.').'<br />'.
                             '<p>'.&mt('You will be able to create one by logging into a LON-CAPA server within the [_1] domain.',$domdesc).'</p>'.
                             '<p>'.&mt('[_1]Log in[_2]','<a href="'.$newurl.'">','</a>').
                             &Apache::loncommon::end_page());
               } else {
                   $r->print(&Apache::loncommon::start_page('Access to LON-CAPA unavailable').
                             '<h3>'.&mt('Account creation unavailable').'</h3>'.
                             &mt('You do not currently have a LON-CAPA account at this institution.').'<br />'.
                             '<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());
               }
           } else {
               &success($r,$form->{'uname'},$udom,$authhost,'noredirect',undef,
                        $form);
               my ($otherserver) = &Apache::lonnet::choose_server($udom);
               $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);
           }
     }      }
     return OK;      return $canhost;
 }  }
   
 1;  1;

Removed from v.1.101.4.2  
changed lines
  Added in v.1.101.8.5


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