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

version 1.132, 2010/02/08 13:28:40 version 1.137, 2010/05/06 16:15:59
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 272  my $link=&Apache::loncommon::designparm( Line 264  my $link=&Apache::loncommon::designparm(
 my $vlink=&Apache::loncommon::designparm('login.vlink',$domain);  my $vlink=&Apache::loncommon::designparm('login.vlink',$domain);
 my $alink=&Apache::loncommon::designparm('login.alink',$domain);  my $alink=&Apache::loncommon::designparm('login.alink',$domain);
 my $mainbg=&Apache::loncommon::designparm('login.mainbg',$domain);  my $mainbg=&Apache::loncommon::designparm('login.mainbg',$domain);
   my $loginbox_bg=&Apache::loncommon::designparm('login.sidebg',$domain);
   my $loginbox_header_bgcol=&Apache::loncommon::designparm('login.bgcol',$domain);
   my $loginbox_header_textcol=&Apache::loncommon::designparm('login.textcol',$domain);
 my $logo=&Apache::loncommon::designparm('login.logo',$domain);  my $logo=&Apache::loncommon::designparm('login.logo',$domain);
 my $img=&Apache::loncommon::designparm('login.img',$domain);  my $img=&Apache::loncommon::designparm('login.img',$domain);
 my $domainlogo='<div>'.&Apache::loncommon::domainlogo($domain).'</div>';  my $domainlogo='<div>'.&Apache::loncommon::domainlogo($domain).'</div>';
Line 364  my %lt=&Apache::lonlocal::texthash( Line 359  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 375  $r->print(<$jsh>); Line 370  $r->print(<$jsh>);
 # ---------------------------------------------------------- Serve rest of page  # ---------------------------------------------------------- Serve rest of page
   
 $r->print(  $r->print(
   '<div class="LC_loginpage_container">');      '<div class="LC_Box"'
      .' style="margin:0 auto; padding:10px; width:90%; height: auto; background-color:#FFFFFF;">'
   );
   
 #  #
 #  If the loadbalancing yielded just http:// because perhaps there's no loadbalancing?  #  If the loadbalancing yielded just http:// because perhaps there's no loadbalancing?
Line 403  my $newuserlink; Line 400  my $newuserlink;
 if ($shownewuserlink) {  if ($shownewuserlink) {
     $newuserlink = &newuser_link($lt{'newuser'}).'<br />';      $newuserlink = &newuser_link($lt{'newuser'}).'<br />';
 }  }
 my $logintitle;  my $logintitle =
       '<h2 class="LC_hcell"'
      .' style="background:'.$loginbox_header_bgcol.';'
      .' color:'.$loginbox_header_textcol.'">';
 if ($loginheader eq 'text') {  if ($loginheader eq 'text') {
     $logintitle ='<h2>'.$lt{'log'}.'</h2>';      $logintitle .= $lt{'log'};
 } else {  } else {
     $logintitle = '<img src="'.$login.'" alt="'.      $logintitle .= '<img src="'.$login.'"'.
                   &mt('User Authentication').'" />';                     ' alt="'.&mt('User Authentication').'" />';
 }  }
   $logintitle .= '</h2>';
   
 my $noscript_warning='<noscript><span class="LC_warning"><b>'  my $noscript_warning='<noscript><span class="LC_warning"><b>'
                      .&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.')                       .&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.')
Line 441  LFORM Line 442  LFORM
 HEADER  HEADER
     }      }
     $r->print(<<ENDTOP);      $r->print(<<ENDTOP);
 <div class="LC_loginpage_space">&nbsp;</div>  <div style="float:left;">
 <div class="LC_loginpage_floatLeft">  <div class="LC_Box" style="background:$loginbox_bg;">
 <div class="LC_loginpage_loginContainer">  
   $logintitle    $logintitle
    <table border="0" align="left" cellspacing="1" cellpadding="2" width="100%">    $loginform
       <tr>    $noscript_warning
    <td>  
  $loginform  
            </td>  
       </tr>  
    </table>    
    $noscript_warning  
 </div>  </div>
       
 <div class="LC_loginpage_loginInfo">  <div class="LC_Box" style="padding-top: 10px;">
   $loginhelp    $loginhelp
   $forgotpw    $forgotpw
   $contactblock    $contactblock
Line 463  HEADER Line 457  HEADER
   $coursecatalog    $coursecatalog
 </div>  </div>
 </div>  </div>
   
   <div>
 ENDTOP  ENDTOP
     if ($showmainlogo) {      if ($showmainlogo) {
         $r->print(' <img src="'.$logo.'" alt="" />'."\n");          $r->print(' <img src="'.$logo.'" alt="" />'."\n");
Line 470  ENDTOP Line 466  ENDTOP
 $r->print(<<ENDTOP);  $r->print(<<ENDTOP);
 $announcements  $announcements
 $domainlogo  $domainlogo
 <div class="LC_loginpage_space">&nbsp;</div>  </div>
   <hr style="clear:both;" />
 ENDTOP  ENDTOP
   
 $r->print(<<ENDDOCUMENT);  $r->print(<<ENDDOCUMENT);
Line 529  ENDDOCUMENT Line 526  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'};
     }      }
     my $start_page = &Apache::loncommon::start_page('Switching Server',undef,      my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef,
                                                     {'redirect' => [0,$url],});                                                      {'redirect' => [0,$url],});
     my $end_page   = &Apache::loncommon::end_page();      my $end_page   = &Apache::loncommon::end_page();
     return $start_page.$end_page;      return $start_page.$end_page;
Line 587  sub forgotpwdisplay { Line 626  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;
 }  }

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


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