Diff for /loncom/auth/lonshibauth.pm between versions 1.14 and 1.14.2.1

version 1.14, 2021/12/12 20:49:26 version 1.14.2.1, 2021/12/12 20:56:36
Line 155  In the case of redirection a query strin Line 155  In the case of redirection a query strin
 which will contain either (a) the originally requested URL,  which will contain either (a) the originally requested URL,
 if not /adm/sso (or lonOtherAuthenUrl URL), and   if not /adm/sso (or lonOtherAuthenUrl URL), and 
 any existing query string in the original request, or  any existing query string in the original request, or
 (b) if original request was for /tiny/domain/uniqueID,  (b) if redirect is to /adm/login to support dual SSO and
 or if redirect is to /adm/login to support dual SSO and  
 non-SSO, a query string which contains sso=tokenID, where the  non-SSO, a query string which contains sso=tokenID, where the
 token contains information for deep-linking to course/resource.   token contains information for deep-linking to course/resource. 
   
Line 193  Output: 1 Line 192  Output: 1
 $querystring - query string to append to URL  $querystring - query string to append to URL
 when redirecting.  when redirecting.
   
 If any of the following items are present in the original query string:  If role and/or symb are present in the original query string:
 role, symb, and linkkey, then they will be stored in the token file  then they will be stored in the token file on the server,
 on the server, for access later to support deep-linking.  If the ltoken  for access later to support deep-linking.
 item is available, from successful launch from an LTI Consumer where  
 LON-CAPA is the LTI Provider, but not configured to accept user   
 information, and the destination is a deep-link URL /tiny/domain/uniqueiD,  
 then the LTI number, type (c or d), and tiny URL will be saved as the  
 linkprot item in a token file.  
   
 =back  =back
   
Line 245  sub handler { Line 239  sub handler {
              }               }
         } else {          } else {
             my $uri = $r->uri;              my $uri = $r->uri;
             if ($uri =~ m{^/tiny/$match_domain/\w+$}) {              if ($r->args ne '') {
                 my $querystring = &set_token($r,$lonhost);                  $dest .= (($dest=~/\?/)?'&':'?').$r->args;
                 if ($querystring ne '') {              }
                     $dest .= '?'.$querystring;              unless (($uri eq '/adm/roles') || ($uri eq '/adm/logout')) {
                 }                  unless ($r->args =~ /origurl=/) {
             } else {                      $dest.=(($dest=~/\?/)?'&':'?').'origurl='.$uri;
                 if ($r->args ne '') {  
                     $dest .= (($dest=~/\?/)?'&':'?').$r->args;  
                 }  
                 unless (($uri eq '/adm/roles') || ($uri eq '/adm/logout')) {  
                     unless ($r->args =~ /origurl=/) {  
                         $dest.=(($dest=~/\?/)?'&':'?').'origurl='.$uri;  
                     }  
                 }                  }
             }              }
         }          }
Line 271  sub handler { Line 258  sub handler {
 sub set_token {  sub set_token {
     my ($r,$lonhost) = @_;      my ($r,$lonhost) = @_;
     my ($firsturl,$querystring,$ssotoken,@names,%token);      my ($firsturl,$querystring,$ssotoken,@names,%token);
     @names = ('role','symb','ltoken','linkkey');      @names = ('role','symb');
     map { $token{$_} = 1; } @names;      map { $token{$_} = 1; } @names;
     unless (($r->uri eq '/adm/roles') || ($r->uri eq '/adm/logout')) {      unless (($r->uri eq '/adm/roles') || ($r->uri eq '/adm/logout')) {
         $firsturl = $r->uri;          $firsturl = $r->uri;
Line 279  sub set_token { Line 266  sub set_token {
     if ($r->args ne '') {      if ($r->args ne '') {
         &Apache::loncommon::get_unprocessed_cgi($r->args);          &Apache::loncommon::get_unprocessed_cgi($r->args);
     }      }
     if ($r->uri =~ m{^/tiny/$match_domain/\w+$}) {  
         if ($env{'form.ttoken'}) {  
             my %info = &Apache::lonnet::tmpget($env{'form.ttoken'});  
             &Apache::lonnet::tmpdel($env{'form.ttoken'});  
             if ($info{'ltoken'}) {  
                 $env{'form.ltoken'} = $info{'ltoken'};  
             } elsif ($info{'linkkey'} ne '') {  
                 $env{'form.linkkey'} = $info{'linkkey'};  
             }  
         } else {  
             unless (($env{'form.ltoken'}) || ($env{'form.linkkey'})) {  
                 &Apache::lonacc::get_posted_cgi($r,['linkkey']);  
             }  
         }  
     }  
     my $extras;      my $extras;
     foreach my $name (@names) {      foreach my $name (@names) {
         if ($env{'form.'.$name} ne '') {          if ($env{'form.'.$name} ne '') {
             if ($name eq 'ltoken') {              $extras .= '&'.$name.'='.&escape($env{'form.'.$name});
                 my %info = &Apache::lonnet::tmpget($env{'form.ltoken'});  
                 &Apache::lonnet::tmpdel($env{'form.ltoken'});  
                 if ($info{'linkprot'}) {  
                     $extras .= '&linkprot='.&escape($info{'linkprot'});  
                     last;  
                 }  
             } else {  
                 $extras .= '&'.$name.'='.&escape($env{'form.'.$name});  
             }  
         }          }
     }      }
     if (($firsturl ne '') || ($extras ne '')) {      if (($firsturl ne '') || ($extras ne '')) {
Line 319  sub set_token { Line 282  sub set_token {
         foreach my $key (sort(keys(%env))) {          foreach my $key (sort(keys(%env))) {
             if ($key =~ /^form\.(.+)$/) {              if ($key =~ /^form\.(.+)$/) {
                 my $name = $1;                  my $name = $1;
                 next if (($token{$name}) || ($name eq 'ttoken'));                  next if ($token{$name});
                 $querystring .= '&'.$name.'='.$env{$key};                  $querystring .= '&'.$name.'='.$env{$key};
             }              }
         }          }

Removed from v.1.14  
changed lines
  Added in v.1.14.2.1


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