Diff for /loncom/auth/lonacc.pm between versions 1.192 and 1.199

version 1.192, 2021/07/19 15:48:26 version 1.199, 2021/10/26 15:52:54
Line 305  sub sso_login { Line 305  sub sso_login {
     my $query = $r->args;      my $query = $r->args;
     my %form;      my %form;
     if ($query) {      if ($query) {
         my @items = ('role','symb','iptoken','origurl');          my @items = ('role','symb','iptoken','origurl','ltoken','linkkey','logtoken');
         &Apache::loncommon::get_unprocessed_cgi($query,\@items);          &Apache::loncommon::get_unprocessed_cgi($query,\@items);
         foreach my $item (@items) {          foreach my $item (@items) {
             if (defined($env{'form.'.$item})) {              if (defined($env{'form.'.$item})) {
Line 323  sub sso_login { Line 323  sub sso_login {
         }          }
     }      }
   
       my ($linkprot,$linkkey);
       if ($form{'logtoken'}) {
           my ($firsturl,@rest);
           my $lonhost = $r->dir_config('lonHostID');
           my $tmpinfo = &Apache::lonnet::reply('tmpget:'.$form{'logtoken'},$lonhost);
           my $delete = &Apache::lonnet::tmpdel($form{'logtoken'});
           (undef,$firsturl,@rest) = split(/&/,$tmpinfo);
           foreach my $item (@rest) {
               my ($key,$value) = split(/=/,$item);
               $form{$key} = &unescape($value);
           }
           if ($firsturl =~ m{^/tiny/$match_domain/\w+$}) {
               $form{'origurl'} = $firsturl;
           }
       }
       if ($form{'ltoken'}) {
           my %link_info = &Apache::lonnet::tmpget($form{'ltoken'});
           $linkprot = $link_info{'linkprot'};
           my $delete = &Apache::lonnet::tmpdel($form{'ltoken'});
       }
       if ($form{'linkkey'} ne '') {
           $linkkey = $form{'linkkey'};
       }
   
     my $domain = $r->dir_config('lonSSOUserDomain');      my $domain = $r->dir_config('lonSSOUserDomain');
     if ($domain eq '') {      if ($domain eq '') {
         $domain = $r->dir_config('lonDefDomain');          $domain = $r->dir_config('lonDefDomain');
Line 372  sub sso_login { Line 396  sub sso_login {
                     $env{'form.origurl'} = $r->uri;                      $env{'form.origurl'} = $r->uri;
                 }                  }
             }              }
               if (($r->uri eq '/adm/sso') && ($form{'origurl'} =~ m{^/+tiny/+$match_domain/+\w+$})) {
                   $env{'request.deeplink.login'} = $form{'origurl'};
               } elsif ($r->uri =~ m{^/+tiny/+$match_domain/+\w+$}) {
                   $env{'request.deeplink.login'} = $r->uri;
               }
               if ($env{'request.deeplink.login'}) {
                   if ($linkprot) {
                       $env{'request.linkprot'} = $linkprot;
                   } elsif ($linkkey ne '') {
                       $env{'request.linkkey'} = $linkkey;
                   }
               }
             $env{'request.sso.login'} = 1;              $env{'request.sso.login'} = 1;
             if (defined($r->dir_config("lonSSOReloginServer"))) {              if (defined($r->dir_config("lonSSOReloginServer"))) {
                 $env{'request.sso.reloginserver'} =                  $env{'request.sso.reloginserver'} =
Line 403  sub sso_login { Line 439  sub sso_login {
                     $info{'origurl'} = $r->uri;                       $info{'origurl'} = $r->uri; 
                 }                  }
             }              }
               if (($r->uri eq '/adm/sso') && ($form{'origurl'} =~ m{^/+tiny/+$match_domain/+\w+$})) {
                   $info{'deeplink.login'} = $form{'origurl'};
               } elsif ($r->uri =~ m{^/+tiny/+$match_domain/+\w+$}) {
                   $info{'deeplink.login'} = $r->uri;
               }
               if ($info{'deeplink.login'}) {
                   if ($linkprot) {
                       $info{'linkprot'} = $linkprot;
                   } elsif ($linkkey ne '') {
                       $info{'linkkey'} = $linkkey;
                   }
               }
             if ($r->dir_config("ssodirecturl") == 1) {              if ($r->dir_config("ssodirecturl") == 1) {
                 $info{'origurl'} = $r->uri;                  $info{'origurl'} = $r->uri;
             }              }
Line 479  sub handler { Line 527  sub handler {
     if ($handle eq '') {      if ($handle eq '') {
         unless ((($requrl eq '/adm/switchserver') && (!$r->is_initial_req())) ||          unless ((($requrl eq '/adm/switchserver') && (!$r->is_initial_req())) ||
                 ($requrl =~ m{^/public/$match_domain/$match_courseid/syllabus}) ||                  ($requrl =~ m{^/public/$match_domain/$match_courseid/syllabus}) ||
                 ($requrl =~ m{^/adm/help/}) ||                  ($requrl =~ m{^/adm/help/}) || ($requrl eq '/adm/sso') ||
                 ($requrl =~ m{^/res/$match_domain/$match_username/})) {                  ($requrl =~ m{^/res/$match_domain/$match_username/})) {
     $r->log_reason("Cookie not valid", $r->filename);      $r->log_reason("Cookie not valid", $r->filename);
         }          }
Line 592  sub handler { Line 640  sub handler {
                 if (($found_server) && ($balancer_cookie =~ /^\Q$env{'user.domain'}\E_\Q$env{'user.name'}\E_/)) {                  if (($found_server) && ($balancer_cookie =~ /^\Q$env{'user.domain'}\E_\Q$env{'user.name'}\E_/)) {
                     $otherserver = $found_server;                      $otherserver = $found_server;
                 }                  }
                 unless ($requrl eq '/adm/switchserver') {                   unless ($requrl eq '/adm/switchserver') {
                     $r->set_handlers('PerlResponseHandler'=>                      $r->set_handlers('PerlResponseHandler'=>
                                      [\&Apache::switchserver::handler]);                                       [\&Apache::switchserver::handler]);
                 }                  }
Line 696  sub handler { Line 744  sub handler {
                         }                          }
                     }                      }
                 }                  }
                 $access=&Apache::lonnet::allowed('bre',$requrl,'','','','','',$nodeeplinkcheck)                  $access=&Apache::lonnet::allowed('bre',$requrl,'','','','','',$nodeeplinkcheck);
             }              }
         }          }
         if ($check_block) {          if ($check_block) {
Line 754  sub handler { Line 802  sub handler {
                         }                          }
                     }                      }
                 } elsif (($handle =~ /^publicuser_\d+$/) && (&Apache::lonnet::is_portfolio_url($requrl))) {                  } elsif (($handle =~ /^publicuser_\d+$/) && (&Apache::lonnet::is_portfolio_url($requrl))) {
                     my $clientip = &Apache::lonnet::get_requestor_ip($r);                       my $clientip = &Apache::lonnet::get_requestor_ip($r);
                     if (&Apache::lonnet::allowed('bre',$requrl,undef,undef,$clientip) ne 'F') {                      if (&Apache::lonnet::allowed('bre',$requrl,undef,undef,$clientip) ne 'F') {
                         $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied";                          $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied";
                         return HTTP_NOT_ACCEPTABLE;                          return HTTP_NOT_ACCEPTABLE;
Line 823  sub handler { Line 871  sub handler {
                                 my ($map,$mid,$murl)=&Apache::lonnet::decode_symb($symb);                                  my ($map,$mid,$murl)=&Apache::lonnet::decode_symb($symb);
                                 if ($map =~ /\.page$/) {                                  if ($map =~ /\.page$/) {
                                     my $mapsymb = &Apache::lonnet::symbread($map);                                      my $mapsymb = &Apache::lonnet::symbread($map);
                                     ($map,$mid,$murl)=&Apache::lonnet::decode_symb($mapsymb);                                       ($map,$mid,$murl)=&Apache::lonnet::decode_symb($mapsymb);
                                 }                                  }
                                 &Apache::lonnet::symblist($map,$murl => [$murl,$mid],                                  &Apache::lonnet::symblist($map,$murl => [$murl,$mid],
                                                           'last_known' =>[$murl,$mid]);                                                            'last_known' =>[$murl,$mid]);

Removed from v.1.192  
changed lines
  Added in v.1.199


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