Diff for /loncom/auth/lonlogin.pm between versions 1.152 and 1.158.2.2

version 1.152, 2012/08/27 00:52:45 version 1.158.2.2, 2015/03/06 22:36:56
Line 46  sub handler { Line 46  sub handler {
  (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'},   (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'},
       $ENV{'REDIRECT_QUERY_STRING'}),        $ENV{'REDIRECT_QUERY_STRING'}),
  ['interface','username','domain','firsturl','localpath','localres',   ['interface','username','domain','firsturl','localpath','localres',
   'token','role','symb']);    'token','role','symb','iptoken']);
     if (!defined($env{'form.firsturl'})) {      if (!defined($env{'form.firsturl'})) {
         &Apache::lonacc::get_posted_cgi($r,['firsturl']);          &Apache::lonacc::get_posted_cgi($r,['firsturl']);
     }      }
Line 103  sub handler { Line 103  sub handler {
   
 # ---------------------------------------------------- No valid token, continue  # ---------------------------------------------------- No valid token, continue
   
  # ---------------------------- Not possible to really login to domain "public"  # ---------------------------- Not possible to really login to domain "public"
     if ($env{'form.domain'} eq 'public') {      if ($env{'form.domain'} eq 'public') {
  $env{'form.domain'}='';   $env{'form.domain'}='';
  $env{'form.username'}='';   $env{'form.username'}='';
     }      }
   
   # ------ Is this page requested because /adm/migrateuser detected an IP change?
       my %sessiondata;
       if ($env{'form.iptoken'}) {
           %sessiondata = &Apache::lonnet::tmpget($env{'form.iptoken'});
           unless ($sessiondata{'sessionserver'}) {
               my $delete = &Apache::lonnet::tmpdel($env{'form.iptoken'});
               delete($env{'form.iptoken'});
           }
       }
 # ----------------------------------------------------------- Process Interface  # ----------------------------------------------------------- Process Interface
     $env{'form.interface'}=~s/\W//g;      $env{'form.interface'}=~s/\W//g;
   
     my $httpbrowser=$ENV{"HTTP_USER_AGENT"};      (undef,undef,undef,undef,undef,undef,my $clientmobile) =
           &Apache::loncommon::decode_user_agent();
   
     my $iconpath=       my $iconpath= 
  &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));   &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));
Line 119  sub handler { Line 130  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();
     if ($lonhost ne '') {      if ($lonhost ne '') {
         my $redirect = &check_loginvia($domain,$lonhost);          unless ($sessiondata{'sessionserver'}) {
         if ($redirect) {              my $redirect = &check_loginvia($domain,$lonhost);
             $r->print($redirect);              if ($redirect) {
             return OK;                  $r->print($redirect);
         }                   return OK;
               }
           }
     }      }
   
     if (($env{'form.domain'}) &&       if (($sessiondata{'domain'}) &&
           (&Apache::lonnet::domain($env{'form.domain'},'description'))) {
           $domain=$sessiondata{'domain'};
       } elsif (($env{'form.domain'}) && 
  (&Apache::lonnet::domain($env{'form.domain'},'description'))) {   (&Apache::lonnet::domain($env{'form.domain'},'description'))) {
  $domain=$env{'form.domain'};   $domain=$env{'form.domain'};
     }      }
   
     my $role    = $r->dir_config('lonRole');      my $role    = $r->dir_config('lonRole');
     my $loadlim = $r->dir_config('lonLoadLim');      my $loadlim = $r->dir_config('lonLoadLim');
     my $uloadlim= $r->dir_config('lonUserLoadLim');      my $uloadlim= $r->dir_config('lonUserLoadLim');
Line 141  sub handler { Line 158  sub handler {
     my $host_name = &Apache::lonnet::hostname($lonhost);      my $host_name = &Apache::lonnet::hostname($lonhost);
   
 # --------------------------------------------- Default values for login fields  # --------------------------------------------- Default values for login fields
       
     my $authusername=($env{'form.username'}?$env{'form.username'}:'');      my ($authusername,$authdomain);
     my $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain);      if ($sessiondata{'username'}) {
           $authusername=$sessiondata{'username'};
       } else {
           $env{'form.username'} = &Apache::loncommon::cleanup_html($env{'form.username'});
           $authusername=($env{'form.username'}?$env{'form.username'}:'');
       }
       if ($sessiondata{'domain'}) {
           $authdomain=$sessiondata{'domain'};
       } else {
           $env{'form.domain'} = &Apache::loncommon::cleanup_html($env{'form.domain'});
           $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain);
       }
   
 # ---------------------------------------------------------- Determine own load  # ---------------------------------------------------------- Determine own load
     my $loadavg;      my $loadavg;
Line 197  sub handler { Line 225  sub handler {
         }          }
         $tokenextras .= '&symb='.&escape($env{'form.symb'});          $tokenextras .= '&symb='.&escape($env{'form.symb'});
     }      }
       if ($env{'form.iptoken'}) {
           if (!$tokenextras) {
               $tokenextras = '&&';
           }
           $tokenextras .= '&iptoken='.&escape($env{'form.iptoken'});
       }
     my $logtoken=Apache::lonnet::reply(      my $logtoken=Apache::lonnet::reply(
        'tmpput:'.$ukey.$lkey.'&'.$firsturl.$tokenextras,         'tmpput:'.$ukey.$lkey.'&'.$firsturl.$tokenextras,
        $lonhost);         $lonhost);
Line 289  sub handler { Line 323  sub handler {
     if (defined(&Apache::loncommon::designparm('login.showlogo_logo',$domain))) {      if (defined(&Apache::loncommon::designparm('login.showlogo_logo',$domain))) {
         $showmainlogo = &Apache::loncommon::designparm('login.showlogo_logo',$domain);          $showmainlogo = &Apache::loncommon::designparm('login.showlogo_logo',$domain);
     }      }
     my $showadminmail=&Apache::loncommon::designparm('login.adminmail',$domain);      my $showadminmail;
       my @possdoms = &Apache::lonnet::current_machine_domains();
       if (grep(/^\Q$domain\E$/,@possdoms)) {
           $showadminmail=&Apache::loncommon::designparm('login.adminmail',$domain);
       }
     my $showcoursecat =      my $showcoursecat =
         &Apache::loncommon::designparm('login.coursecatalog',$domain);          &Apache::loncommon::designparm('login.coursecatalog',$domain);
     my $shownewuserlink =       my $shownewuserlink = 
         &Apache::loncommon::designparm('login.newuser',$domain);          &Apache::loncommon::designparm('login.newuser',$domain);
       my $showhelpdesk =
           &Apache::loncommon::designparm('login.helpdesk',$domain);
     my $now=time;      my $now=time;
     my $js = (<<ENDSCRIPT);      my $js = (<<ENDSCRIPT);
   
Line 347  ENDSCRIPT Line 387  ENDSCRIPT
        alink        => "$alink",         alink        => "$alink",
                onload       => 'javascript:enableInput();',);                 onload       => 'javascript:enableInput();',);
   
       my %defaultdomconf = &Apache::loncommon::get_domainconf($defdom);
       my $headextra = $defaultdomconf{$defdom.'.login.headtag_'.$lonhost};
       my $headextra_exempt = $defaultdomconf{$domain.'.login.headtag_exempt_'.$lonhost};
       if ($headextra) {
           my $omitextra;
           if ($headextra_exempt ne '') {
               my @exempt = split(',',$headextra_exempt);
               my $ip = $ENV{'REMOTE_ADDR'};
               if (grep(/^\Q$ip\E$/,@exempt)) {
                   $omitextra = 1;
               }
           }
           unless ($omitextra) {
               my $confname = $defdom.'-domainconfig';
               if ($headextra =~ m{^\Q/res/$defdom/$confname/login/headtag/$lonhost/\E}) {
                   my $extra = &Apache::lonnet::getfile(&Apache::lonnet::filelocation("",$headextra));
                   unless ($extra eq '-1') {
                       $js .= "\n".$extra."\n";
                   }
               }
           }
       }
   
     $r->print(&Apache::loncommon::start_page('The LearningOnline Network with CAPA Login',$js,      $r->print(&Apache::loncommon::start_page('The LearningOnline Network with CAPA Login',$js,
        { 'redirect'       => [$expire,'/adm/roles'],          { 'redirect'       => [$expire,'/adm/roles'], 
  'add_entries' => \%add_entries,   'add_entries' => \%add_entries,
Line 424  ENDSERVERFORM Line 487  ENDSERVERFORM
                         .'</b></span></noscript>';                          .'</b></span></noscript>';
     my $helpdeskscript;      my $helpdeskscript;
     my $contactblock = &contactdisplay(\%lt,$servadm,$showadminmail,      my $contactblock = &contactdisplay(\%lt,$servadm,$showadminmail,
                                        $authdomain,\$helpdeskscript);                                         $authdomain,\$helpdeskscript,
                                          $showhelpdesk,\@possdoms);
   
       my $mobileargs;
       if ($clientmobile) {
           $mobileargs = 'autocapitalize="off" autocorrect="off"'; 
       }
     my $loginform=(<<LFORM);      my $loginform=(<<LFORM);
 <form name="client" action="" onsubmit="return(send())">  <form name="client" action="" onsubmit="return(send())">
   <input type="hidden" name="lextkey" value="$lextkey" />    <input type="hidden" name="lextkey" value="$lextkey" />
   <input type="hidden" name="uextkey" value="$uextkey" />    <input type="hidden" name="uextkey" value="$uextkey" />
   <b><label for="uname">$lt{'un'}</label>:</b><br />    <b><label for="uname">$lt{'un'}</label>:</b><br />
   <input type="text" name="uname" id="uname" size="15" value="$authusername" readonly="readonly" /><br />    <input type="text" name="uname" id="uname" size="15" value="$authusername" readonly="readonly" $mobileargs /><br />
   <b><label for="upass$now">$lt{'pw'}</label>:</b><br />    <b><label for="upass$now">$lt{'pw'}</label>:</b><br />
   <input type="password" name="upass$now" id="upass$now" size="15" readonly="readonly" /><br />    <input type="password" name="upass$now" id="upass$now" size="15" readonly="readonly" /><br />
   <b><label for="udom">$lt{'dom'}</label>:</b><br />    <b><label for="udom">$lt{'dom'}</label>:</b><br />
   <input type="text" name="udom" id="udom" size="15" value="$authdomain" readonly="readonly" /><br />    <input type="text" name="udom" id="udom" size="15" value="$authdomain" readonly="readonly" $mobileargs /><br />
   <input type="submit" value="$lt{'log'}" />    <input type="submit" value="$lt{'log'}" />
 </form>  </form>
 LFORM  LFORM
Line 617  sub redirect_page { Line 685  sub redirect_page {
 }  }
   
 sub contactdisplay {  sub contactdisplay {
     my ($lt,$servadm,$showadminmail,$authdomain,$helpdeskscript) = @_;      my ($lt,$servadm,$showadminmail,$authdomain,$helpdeskscript,$showhelpdesk,
           $possdoms) = @_;
     my $contactblock;      my $contactblock;
     my $showhelpdesk = 0;      my $origmail;
     my $requestmail = $Apache::lonnet::perlvar{'lonSupportEMail'};      if (ref($possdoms) eq 'ARRAY') {
     if ($requestmail =~ m/^[^\@]+\@[^\@]+$/) {          if (grep(/^\Q$authdomain\E$/,@{$possdoms})) { 
         $showhelpdesk = 1;              $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
           }
       }
       my $requestmail = 
           &Apache::loncommon::build_recipient_list(undef,'helpdeskmail',
                                                    $authdomain,$origmail);
       unless ($showhelpdesk eq '0') {
           if ($requestmail =~ m/[^\@]+\@[^\@]+/) {
               $showhelpdesk = 1;
           } else {
               $showhelpdesk = 0;
           }
     }      }
     if ($servadm && $showadminmail) {      if ($servadm && $showadminmail) {
         $contactblock .= $$lt{'servadm'}.':<br />'.          $contactblock .= $$lt{'servadm'}.':<br />'.
Line 635  sub contactdisplay { Line 715  sub contactdisplay {
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
 function helpdesk() {  function helpdesk() {
     var codedom = document.client.udom.value;      var possdom = document.client.udom.value;
       var codedom = possdom.replace( new RegExp("[^A-Za-z0-9.\\-]","g"),'');
     if (codedom == '') {      if (codedom == '') {
         codedom = "$authdomain";          codedom = "$authdomain";
     }      }

Removed from v.1.152  
changed lines
  Added in v.1.158.2.2


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