Diff for /loncom/auth/lonauth.pm between versions 1.156 and 1.159

version 1.156, 2018/12/26 20:10:21 version 1.159, 2020/03/15 23:04:10
Line 46  use Digest::MD5; Line 46  use Digest::MD5;
 # ------------------------------------------------------------ Successful login  # ------------------------------------------------------------ Successful login
 sub success {  sub success {
     my ($r, $username, $domain, $authhost, $lowerurl, $extra_env,      my ($r, $username, $domain, $authhost, $lowerurl, $extra_env,
  $form,$skipcritical) = @_;   $form,$skipcritical,$cid) = @_;
   
 # ------------------------------------------------------------ Get cookie ready  # ------------------------------------------------------------ Get cookie ready
     my $cookie =      my $cookie =
Line 108  sub success { Line 108  sub success {
             }              }
             $r->send_http_header;              $r->send_http_header;
             if (ref($form) eq 'HASH') {              if (ref($form) eq 'HASH') {
                   $form->{'lti.login'} = $env{'request.lti.login'};
                 $form->{'lti.reqcrs'} = $env{'request.lti.reqcrs'};                  $form->{'lti.reqcrs'} = $env{'request.lti.reqcrs'};
                 $form->{'lti.reqrole'} = $env{'request.lti.reqrole'};                  $form->{'lti.reqrole'} = $env{'request.lti.reqrole'};
                 $form->{'lti.sourcecrs'} = $env{'request.lti.sourcecrs'};                  $form->{'lti.sourcecrs'} = $env{'request.lti.sourcecrs'};
Line 147  sub success { Line 148  sub success {
     }      }
     if (defined($form->{symb})) {      if (defined($form->{symb})) {
         my $destsymb = $form->{symb};          my $destsymb = $form->{symb};
           my $encrypted;
           if ($destsymb =~ m{^/enc/}) {
               $encrypted = 1;
               if ($cid) {
                   $destsymb = &Apache::lonenc::unencrypted($destsymb,$cid);
               }
           }
         $destination  .= ($destination =~ /\?/) ? '&' : '?';          $destination  .= ($destination =~ /\?/) ? '&' : '?';
         if ($destsymb =~ /___/) {          if ($destsymb =~ /___/) {
             # FIXME Need to deal with encrypted symbs and urls as needed.  
             my ($map,$resid,$desturl)=split(/___/,$destsymb);              my ($map,$resid,$desturl)=split(/___/,$destsymb);
             $desturl = &Apache::lonnet::clutter($desturl);              $desturl = &Apache::lonnet::clutter($desturl);
               if ($encrypted) {
                   $desturl = &Apache::lonenc::encrypted($desturl,1,$cid);
                   $destsymb = $form->{symb};
               }
             $desturl = &HTML::Entities::encode($desturl,'"<>&');              $desturl = &HTML::Entities::encode($desturl,'"<>&');
             $destsymb = &HTML::Entities::encode($destsymb,'"<>&');              $destsymb = &HTML::Entities::encode($destsymb,'"<>&');
             $destination .= 'destinationurl='.$desturl.              $destination .= 'destinationurl='.$desturl.
                             '&destsymb='.$destsymb;                              '&destsymb='.$destsymb;
         } else {          } elsif (!$encrypted) {
             $destsymb = &HTML::Entities::encode($destsymb,'"<>&');              $destsymb = &HTML::Entities::encode($destsymb,'"<>&');
             $destination .= 'destinationurl='.$destsymb;              $destination .= 'destinationurl='.$destsymb;
         }          }
Line 302  sub failed { Line 313  sub failed {
         my $firsturl = &Apache::loncommon::cleanup_html($form->{firsturl});          my $firsturl = &Apache::loncommon::cleanup_html($form->{firsturl});
         if ($firsturl ne '') {          if ($firsturl ne '') {
             $retry .= (($retry=~/\?/)?'&amp;':'?').'firsturl='.$firsturl;              $retry .= (($retry=~/\?/)?'&amp;':'?').'firsturl='.$firsturl;
               if ($firsturl =~ m{^/tiny/$match_domain/\w+$}) {
                   unless (exists($form->{linkprot})) {
                       if (exists($form->{linkkey})) {
                           $retry .= 'linkkey='.$form->{linkkey};
                       }
                   }
               }
         }          }
     }      }
     if (exists($form->{linkprot})) {      if (exists($form->{linkprot})) {
Line 374  sub handler { Line 392  sub handler {
             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'};
                   if ($env{'form.firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
                       &Apache::lonnet::appenv({'request.deeplink.login' => $env{'form.firsturl'}});
                   }
             }              }
             $r->print(              $r->print(
                $start_page                 $start_page
Line 445  sub handler { Line 466  sub handler {
         return OK;          return OK;
     }      }
   
     my ($key,$firsturl,$rolestr,$symbstr,$iptokenstr,$linkprotstr)=split(/&/,$tmpinfo);      my ($key,$firsturl,$rolestr,$symbstr,$iptokenstr,$linkstr)=split(/&/,$tmpinfo);
     if ($rolestr) {      if ($rolestr) {
         $rolestr = &unescape($rolestr);          $rolestr = &unescape($rolestr);
     }      }
Line 455  sub handler { Line 476  sub handler {
     if ($iptokenstr) {      if ($iptokenstr) {
         $iptokenstr = &unescape($iptokenstr);          $iptokenstr = &unescape($iptokenstr);
     }      }
     if ($linkprotstr) {      if ($linkstr) {
         $linkprotstr = &unescape($linkprotstr);          $linkstr = &unescape($linkstr);
     }      }
     if ($firsturl =~ m{^/tiny/$match_domain/\w+$}) {      if ($firsturl =~ m{^/tiny/$match_domain/\w+$}) {
         $form{'firsturl'} = $firsturl;          $form{'firsturl'} = $firsturl;
Line 470  sub handler { Line 491  sub handler {
     if ($iptokenstr =~ /^iptoken=/) {      if ($iptokenstr =~ /^iptoken=/) {
         (undef,$form{'iptoken'}) = split('=',$iptokenstr);          (undef,$form{'iptoken'}) = split('=',$iptokenstr);
     }      }
     if ($linkprotstr =~ /^linkprot=/) {      if ($linkstr =~ /^linkprot=/) {
         (undef,$form{'linkprot'}) = split('=',$linkprotstr);          (undef,$form{'linkprot'}) = split('=',$linkstr);
       } elsif ($linkstr =~ /^linkkey=/) {
           (undef,$form{'linkkey'}) = split('=',$linkstr);
     }      }
   
     my $upass = $ENV{HTTPS} ? $form{'upass0'}      my $upass = $ENV{HTTPS} ? $form{'upass0'}
Line 655  sub handler { Line 678  sub handler {
             }              }
             if ($form{'linkprot'}) {              if ($form{'linkprot'}) {
                 $env{'request.linkprot'} = $form{'linkprot'};                  $env{'request.linkprot'} = $form{'linkprot'};
               } elsif ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
                   if ($form{'linkkey'}) {
                       $env{'request.linkkey'} = $form{'linkkey'};
                   }
                   $env{'request.deeplink.login'} = $form{'firsturl'};
             }              }
             $r->internal_redirect($switchto);              $r->internal_redirect($switchto);
         } else {          } else {
Line 679  sub handler { Line 707  sub handler {
                 }                  }
                 if ($form{'linkprot'}) {                  if ($form{'linkprot'}) {
                     $env{'request.linkprot'} = $form{'linkprot'};                      $env{'request.linkprot'} = $form{'linkprot'};
                   } elsif ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
                       if ($form{'linkkey'}) {
                           $env{'request.linkkey'} = $form{'linkkey'};
                       }
                       $env{'request.deeplink.login'} = $form{'firsturl'};
   
                 }                  }
                 $r->internal_redirect($switchto);                  $r->internal_redirect($switchto);
             } else {              } else {
Line 711  sub handler { Line 745  sub handler {
                          undef,\%form);                           undef,\%form);
                 if ($form{'linkprot'}) {                  if ($form{'linkprot'}) {
                     $env{'request.linkprot'} = $form{'linkprot'};                      $env{'request.linkprot'} = $form{'linkprot'};
                   } elsif ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
                       if ($form{'linkkey'}) {
                           $env{'request.linkkey'} = $form{'linkkey'};
                       }
                       $env{'request.deeplink.login'} = $form{'firsturl'};
                 }                  }
                 $r->internal_redirect('/adm/switchserver?otherserver='.$unloaded.'&origurl='.$firsturl);                  $r->internal_redirect('/adm/switchserver?otherserver='.$unloaded.'&origurl='.$firsturl);
                 return OK;                  return OK;
Line 726  sub handler { Line 765  sub handler {
                 $extra_env = {'user.linkprotector' => $linkprotector,                  $extra_env = {'user.linkprotector' => $linkprotector,
                               'user.linkproturi'   => $uri,};                                'user.linkproturi'   => $uri,};
             }              }
           } elsif ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
               if ($form{'linkkey'}) {
                   $extra_env = {'user.deeplinkkey' => $form{'linkkey'},
                                 'user.keyedlinkuri' => $form{'firsturl'},
                                 'request.deeplink.login' => $form{'firsturl'}};
               } else {
                   $extra_env = {'request.deeplink.login' => $form{'firsturl'}};
               }
         }          }
         &success($r,$form{'uname'},$form{'udom'},$authhost,$firsturl,$extra_env,          &success($r,$form{'uname'},$form{'udom'},$authhost,$firsturl,$extra_env,
                  \%form);                   \%form);
Line 793  sub check_can_host { Line 840  sub check_can_host {
                      $form);                       $form);
             if ($form->{'linkprot'}) {              if ($form->{'linkprot'}) {
                 $env{'request.linkprot'} = $form->{'linkprot'};                  $env{'request.linkprot'} = $form->{'linkprot'};
               } elsif ($form->{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
                   if ($form->{'linkkey'}) {
                       $env{'request.linkkey'} = $form->{'linkkey'};
                   }
                   $env{'request.deeplink.login'} = $form->{'firsturl'};
             }              }
             my ($otherserver) = &Apache::lonnet::choose_server($udom);              my ($otherserver) = &Apache::lonnet::choose_server($udom);
             $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);              $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);

Removed from v.1.156  
changed lines
  Added in v.1.159


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