Diff for /loncom/auth/lonlogin.pm between versions 1.158.2.3 and 1.158.2.7

version 1.158.2.3, 2015/03/06 22:45:30 version 1.158.2.7, 2018/09/04 01:10:29
Line 38  use Apache::lonlocal; Line 38  use Apache::lonlocal;
 use Apache::migrateuser();  use Apache::migrateuser();
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA;
   use CGI::Cookie();
     
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 56  sub handler { Line 57  sub handler {
  return &Apache::migrateuser::handler($r);   return &Apache::migrateuser::handler($r);
     }      }
   
   # For "public user" - remove any exising "public" cookie, as user really wants to log-in
       my ($handle,$lonidsdir,$expirepub,$userdom);
       unless ($r->header_only) {
           $handle = &Apache::lonnet::check_for_valid_session($r,'lonID',undef,\$userdom);
           if ($handle ne '') {
               $lonidsdir=$r->dir_config('lonIDsDir');
               if ($handle=~/^publicuser\_/) {
                   unlink($r->dir_config('lonIDsDir')."/$handle.id");
                   undef($handle);
                   undef($userdom);
                   $expirepub = 1;
               }
           }
       }
   
     &Apache::loncommon::no_cache($r);      &Apache::loncommon::no_cache($r);
     &Apache::lonlocal::get_language_handle($r);      &Apache::lonlocal::get_language_handle($r);
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
       if ($expirepub) {
           my $c = new CGI::Cookie(-name    => 'lonID',
                                   -value   => '',
                                   -expires => '-10y',);
           $r->header_out('Set-cookie' => $c);
       } elsif (($handle eq '') && ($userdom ne '')) {
           my $c = new CGI::Cookie(-name    => 'lonID',
                                   -value   => '',
                                   -expires => '-10y',);
           $r->headers_out->add('Set-cookie' => $c);
       }
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
Line 70  sub handler { Line 97  sub handler {
  return OK;   return OK;
     }      }
   
   #
   # If browser sent an old cookie for which the session file had been removed
   # check if configuration for user's domain has a portal URL set.  If so
   # switch user's log-in to the portal.
   #
   
       if (($handle eq '') && ($userdom ne '')) {
           my %domdefaults = &Apache::lonnet::get_domain_defaults($userdom);
           if ($domdefaults{'portal_def'} =~ /^https?\:/) {
               my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef,
                                             {'redirect' => [0,$domdefaults{'portal_def'}],});
               my $end_page   = &Apache::loncommon::end_page();
               $r->print($start_page.$end_page);
               return OK;
           }
       }
   
     $env{'form.firsturl'} =~ s/(`)/'/g;      $env{'form.firsturl'} =~ s/(`)/'/g;
   
 # -------------------------------- Prevent users from attempting to login twice  # -------------------------------- Prevent users from attempting to login twice
     my $handle = &Apache::lonnet::check_for_valid_session($r);  
     if ($handle ne '') {      if ($handle ne '') {
         my $lonidsdir=$r->dir_config('lonIDsDir');          &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
         if ($handle=~/^publicuser\_/) {   my $start_page = 
 # For "public user" - remove it, we apparently really want to login      &Apache::loncommon::start_page('Already logged in');
     unlink($r->dir_config('lonIDsDir')."/$handle.id");   my $end_page = 
         } else {      &Apache::loncommon::end_page();
 # Indeed, a valid token is found          my $dest = '/adm/roles';
             &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);          if ($env{'form.firsturl'} ne '') {
     my $start_page =               $dest = $env{'form.firsturl'}; 
         &Apache::loncommon::start_page('Already logged in');          }
     my $end_page =    $r->print(
         &Apache::loncommon::end_page();                $start_page
             my $dest = '/adm/roles';               .'<p class="LC_warning">'.&mt('You are already logged in!').'</p>'
             if ($env{'form.firsturl'} ne '') {               .'<p>'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].',
                 $dest = $env{'form.firsturl'};                 '<a href="'.$dest.'">','</a>','<a href="/adm/logout">','</a>').'</p>'
             }               .$end_page
     $r->print(               );
                   $start_page          return OK;
                  .'<p class="LC_warning">'.&mt('You are already logged in!').'</p>'  
                  .'<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>'  
                  .$end_page  
                  );  
             return OK;  
         }  
     }      }
   
 # ---------------------------------------------------- No valid token, continue  # ---------------------------------------------------- No valid token, continue
Line 353  lextkey=this.document.client.elements.le Line 389  lextkey=this.document.client.elements.le
 initkeys();  initkeys();
   
 this.document.server.elements.upass0.value  this.document.server.elements.upass0.value
     =crypted(this.document.client.elements.upass$now.value.substr(0,15));      =getCrypted(this.document.client.elements.upass$now.value);
 this.document.server.elements.upass1.value  
     =crypted(this.document.client.elements.upass$now.value.substr(15,15));  
 this.document.server.elements.upass2.value  
     =crypted(this.document.client.elements.upass$now.value.substr(30,15));  
   
 this.document.client.elements.uname.value='';  this.document.client.elements.uname.value='';
 this.document.client.elements.upass$now.value='';  this.document.client.elements.upass$now.value='';
Line 388  ENDSCRIPT Line 420  ENDSCRIPT
        alink        => "$alink",         alink        => "$alink",
                onload       => 'javascript:enableInput();',);                 onload       => 'javascript:enableInput();',);
   
     my %defaultdomconf = &Apache::loncommon::get_domainconf($defdom);      my ($lonhost_in_use,$headextra,$headextra_exempt,@hosts,%defaultdomconf);
     my $headextra = $defaultdomconf{$defdom.'.login.headtag_'.$lonhost};      @hosts = &Apache::lonnet::current_machine_ids();
     my $headextra_exempt = $defaultdomconf{$domain.'.login.headtag_exempt_'.$lonhost};      $lonhost_in_use = $lonhost;
       if (@hosts > 1) {
           foreach my $hostid (@hosts) {
               if (&Apache::lonnet::host_domain($hostid) eq $defdom) {
                   $lonhost_in_use = $hostid;
                   last;
               }
           }
       }
       %defaultdomconf = &Apache::loncommon::get_domainconf($defdom);
       $headextra = $defaultdomconf{$defdom.'.login.headtag_'.$lonhost_in_use};
       $headextra_exempt = $defaultdomconf{$domain.'.login.headtag_exempt_'.$lonhost_in_use};
     if ($headextra) {      if ($headextra) {
         my $omitextra;          my $omitextra;
         if ($headextra_exempt ne '') {          if ($headextra_exempt ne '') {
Line 402  ENDSCRIPT Line 445  ENDSCRIPT
         }          }
         unless ($omitextra) {          unless ($omitextra) {
             my $confname = $defdom.'-domainconfig';              my $confname = $defdom.'-domainconfig';
             if ($headextra =~ m{^\Q/res/$defdom/$confname/login/headtag/$lonhost/\E}) {              if ($headextra =~ m{^\Q/res/$defdom/$confname/login/headtag/$lonhost_in_use/\E}) {
                 my $extra = &Apache::lonnet::getfile(&Apache::lonnet::filelocation("",$headextra));                  my $extra = &Apache::lonnet::getfile(&Apache::lonnet::filelocation("",$headextra));
                 unless ($extra eq '-1') {                  unless ($extra eq '-1') {
                     $js .= "\n".$extra."\n";                      $js .= "\n".$extra."\n";
Line 461  ENDSCRIPT Line 504  ENDSCRIPT
    <input type="hidden" name="serverid" value="$lonhost" />     <input type="hidden" name="serverid" value="$lonhost" />
    <input type="hidden" name="uname" value="" />     <input type="hidden" name="uname" value="" />
    <input type="hidden" name="upass0" value="" />     <input type="hidden" name="upass0" value="" />
    <input type="hidden" name="upass1" value="" />  
    <input type="hidden" name="upass2" value="" />  
    <input type="hidden" name="udom" value="" />     <input type="hidden" name="udom" value="" />
    <input type="hidden" name="localpath" value="$env{'form.localpath'}" />     <input type="hidden" name="localpath" value="$env{'form.localpath'}" />
    <input type="hidden" name="localres" value="$env{'form.localres'}" />     <input type="hidden" name="localres" value="$env{'form.localres'}" />
Line 513  LFORM Line 554  LFORM
         $r->print(<<HEADER);          $r->print(<<HEADER);
 <!-- The LON-CAPA Header -->  <!-- The LON-CAPA Header -->
 <div style="background:$pgbg;margin:0;width:100%;">  <div style="background:$pgbg;margin:0;width:100%;">
   <img src="$img" border="0" alt="The Learning Online Network with CAPA" />    <img src="$img" border="0" alt="The Learning Online Network with CAPA" class="LC_maxwidth" />
 </div>  </div>
 HEADER  HEADER
     }      }
Line 537  HEADER Line 578  HEADER
 <div>  <div>
 ENDTOP  ENDTOP
     if ($showmainlogo) {      if ($showmainlogo) {
         $r->print(' <img src="'.$logo.'" alt="" />'."\n");          $r->print(' <img src="'.$logo.'" alt="" class="LC_maxwidth" />'."\n");
     }      }
 $r->print(<<ENDTOP);  $r->print(<<ENDTOP);
 $announcements  $announcements

Removed from v.1.158.2.3  
changed lines
  Added in v.1.158.2.7


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