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

version 1.194, 2021/08/16 15:25:44 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','ltoken','linkkey');          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 324  sub sso_login { Line 324  sub sso_login {
     }      }
   
     my ($linkprot,$linkkey);      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'}) {      if ($form{'ltoken'}) {
         my %link_info = &Apache::lonnet::tmpget($form{'ltoken'});          my %link_info = &Apache::lonnet::tmpget($form{'ltoken'});
         $linkprot = $link_info{'linkprot'};          $linkprot = $link_info{'linkprot'};
Line 388  sub sso_login { Line 402  sub sso_login {
                 $env{'request.deeplink.login'} = $r->uri;                  $env{'request.deeplink.login'} = $r->uri;
             }              }
             if ($env{'request.deeplink.login'}) {              if ($env{'request.deeplink.login'}) {
                 &Apache::lonnet::appenv({'request.deeplink.login' => $r->uri});  
                 if ($linkprot) {                  if ($linkprot) {
                     &Apache::lonnet::appenv({'request.linkprot' => $linkprot});                      $env{'request.linkprot'} = $linkprot;
                 } elsif ($linkkey ne '') {                  } elsif ($linkkey ne '') {
                     &Apache::lonnet::appenv({'request.linkkey' => $linkkey});                      $env{'request.linkkey'} = $linkkey;
                 }                  }
             }              }
             $env{'request.sso.login'} = 1;              $env{'request.sso.login'} = 1;
Line 514  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 627  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 789  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 858  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.194  
changed lines
  Added in v.1.199


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