Diff for /loncom/auth/lonlogin.pm between versions 1.132 and 1.135

version 1.132, 2010/02/08 13:28:40 version 1.135, 2010/03/17 14:37:43
Line 72  sub handler { Line 72  sub handler {
   
 # -------------------------------- Prevent users from attempting to login twice  # -------------------------------- Prevent users from attempting to login twice
     my $handle = &Apache::lonnet::check_for_valid_session($r);      my $handle = &Apache::lonnet::check_for_valid_session($r);
     if ($handle=~/^publicuser\_/) {      if ($handle ne '') {
           my $lonidsdir=$r->dir_config('lonIDsDir');
           if ($handle=~/^publicuser\_/) {
 # For "public user" - remove it, we apparently really want to login  # For "public user" - remove it, we apparently really want to login
  unlink($r->dir_config('lonIDsDir')."/$handle.id");      unlink($r->dir_config('lonIDsDir')."/$handle.id");
     } elsif ($handle ne '') {          } else {
 # Indeed, a valid token is found  # Indeed, a valid token is found
  my $start_page =               &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
     &Apache::loncommon::start_page('Already logged in');      my $start_page = 
  my $end_page =           &Apache::loncommon::start_page('Already logged in');
     &Apache::loncommon::end_page();      my $end_page = 
         my $dest = '/adm/roles';          &Apache::loncommon::end_page();
         if ($env{'form.firsturl'} ne '') {              my $dest = '/adm/roles';
             $dest = $env{'form.firsturl'};               if ($env{'form.firsturl'} ne '') {
         }                  $dest = $env{'form.firsturl'}; 
                       }
     my $dom = &Apache::lonnet::default_login_domain();      $r->print(
     my %helpconfig = &Apache::lonnet::get_dom('configuration',['helpsettings'],$dom);  
       
     my $loginhelp_page = $helpconfig{'helpsettings'}{'loginhelpurl'};  
     if ($loginhelp_page eq '') {  
  $loginhelp_page = '/adm/loginproblems.html';  
     }  
  $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>').'</p>'                    '<a href="'.$dest.'">','</a>','<a href="/adm/logout">','</a>').'</p>'
                  .'<p><a href="'.$loginhelp_page.'">'.&mt('Login problems?').'</a></p>'                   .$end_page
                  .$dom.' '.$end_page  
                  );                   );
         return OK;              return OK;
           }
     }      }
   
 # ---------------------------------------------------- No valid token, continue  # ---------------------------------------------------- No valid token, continue
Line 121  sub handler { Line 116  sub handler {
   
     my $lonhost = $r->dir_config('lonHostID');      my $lonhost = $r->dir_config('lonHostID');
     my $domain = &Apache::lonnet::default_login_domain();      my $domain = &Apache::lonnet::default_login_domain();
     my %domconfhash = &Apache::loncommon::get_domainconf($domain);  
     if ($lonhost ne '') {      if ($lonhost ne '') {
         my $loginvia = $domconfhash{$domain.'.login.loginvia_'.$lonhost};          my $redirect = &check_loginvia($domain,$lonhost);
         if (($loginvia ne '') && ($loginvia ne $lonhost)) {          if ($redirect) {
             if (&Apache::lonnet::hostname($loginvia) ne '') {              $r->print($redirect);
                 $r->print(&redirect_page($loginvia));              return OK;
                 return OK;          } 
             }  
         }  
     }      }
   
     if (($env{'form.domain'}) &&       if (($env{'form.domain'}) && 
Line 364  my %lt=&Apache::lonlocal::texthash( Line 356  my %lt=&Apache::lonlocal::texthash(
   
 my $forgotpw = &forgotpwdisplay(%lt);  my $forgotpw = &forgotpwdisplay(%lt);
 $forgotpw .= '<br />' if $forgotpw;  $forgotpw .= '<br />' if $forgotpw;
 my $loginhelp = &loginhelpdisplay(%lt);  my $loginhelp = &loginhelpdisplay($authdomain,%lt);
 $loginhelp .= '<br />' if $loginhelp;  $loginhelp .= '<br />' if $loginhelp;
   
 # ---------------------------------------------------- Serve out DES JavaScript  # ---------------------------------------------------- Serve out DES JavaScript
Line 529  ENDDOCUMENT Line 521  ENDDOCUMENT
     return OK;      return OK;
 }  }
   
   sub check_loginvia {
       my ($domain,$lonhost) = @_;
       if ($domain eq '' || $lonhost eq '') {
           return;
       }
       my %domconfhash = &Apache::loncommon::get_domainconf($domain);
       my $loginvia = $domconfhash{$domain.'.login.loginvia_'.$lonhost};
       my $loginvia_exempt = $domconfhash{$domain.'.login.loginvia_exempt_'.$lonhost};
       my $output;
       if ($loginvia ne '') {
           my $noredirect;
           my $ip = $ENV{'REMOTE_ADDR'};
           if ($ip eq '127.0.0.1') {
               $noredirect = 1;
           } else {
               if ($loginvia_exempt ne '') {
                   my @exempt = split(',',$loginvia_exempt);
                   if (grep(/^\Q$ip\E$/,@exempt)) {
                       $noredirect = 1;
                   }
               }
           }
           unless ($noredirect) {
               my ($newhost,$path);
               if ($loginvia =~ /:/) {
                   ($newhost,$path) = split(':',$loginvia);
               } else {
                   $newhost = $loginvia;
               }
               if ($newhost ne $lonhost) {
                   if (&Apache::lonnet::hostname($newhost) ne '') {
                       $output = &redirect_page($newhost,$path);
                   }
               }
           }
       }
       return $output;
   }
   
 sub redirect_page {  sub redirect_page {
     my ($desthost) = @_;      my ($desthost,$path) = @_;
     my $protocol = $Apache::lonnet::protocol{$desthost};      my $protocol = $Apache::lonnet::protocol{$desthost};
     $protocol = 'http' if ($protocol ne 'https');      $protocol = 'http' if ($protocol ne 'https');
     my $url = $protocol.'://'.&Apache::lonnet::hostname($desthost).'/';      unless ($path =~ m{^/}) {
           $path = '/'.$path;
       }
       my $url = $protocol.'://'.&Apache::lonnet::hostname($desthost).$path;
     if ($env{'form.firsturl'} ne '') {      if ($env{'form.firsturl'} ne '') {
         $url .='?firsturl='.$env{'form.firsturl'};          $url .='?firsturl='.$env{'form.firsturl'};
     }      }
Line 587  sub forgotpwdisplay { Line 621  sub forgotpwdisplay {
 }  }
   
 sub loginhelpdisplay {  sub loginhelpdisplay {
     my (%lt) = @_;      my ($authdomain,%lt) = @_;
     my $login_help = 1;      my $login_help = 1;
     if ($login_help) {      if ($login_help) {
     my $dom = &Apache::lonnet::default_login_domain();          my $dom = $authdomain;
  my %helpconfig = &Apache::lonnet::get_dom('configuration',['helpsettings'],$dom);          if ($dom eq '') {
  my $loginhelp_url = $helpconfig{'helpsettings'}{'loginhelpurl'};              $dom = &Apache::lonnet::default_login_domain();
  if ($loginhelp_url ne '') {          }
         return '<a href="'.$loginhelp_url.'">'.$lt{'help'}.'</a>';          my %helpconfig = &Apache::lonnet::get_dom('configuration',['helpsettings'],$dom);
           my $loginhelp_url = $helpconfig{'helpsettings'}{'loginhelpurl'};
           if ($loginhelp_url ne '') {
               return '<a href="'.$loginhelp_url.'">'.$lt{'help'}.'</a>';
         } else {          } else {
         return '<a href="/adm/loginproblems.html">'.$lt{'help'}.'</a>';              return '<a href="/adm/loginproblems.html">'.$lt{'help'}.'</a>';
         }          }
     }      }
     return;      return;
 }  }
Line 605  sub loginhelpdisplay { Line 642  sub loginhelpdisplay {
 sub coursecatalog_link {  sub coursecatalog_link {
     my ($linkname) = @_;      my ($linkname) = @_;
     return <<"END";      return <<"END";
       <a href="/adm/coursecatalog">$linkname</a>        <span class="LC_nobreak"><a href="/adm/coursecatalog">$linkname</a></span>
 END  END
 }  }
   

Removed from v.1.132  
changed lines
  Added in v.1.135


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