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

version 1.188, 2021/02/10 11:35:40 version 1.192, 2021/07/19 15:48:26
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');          my @items = ('role','symb','iptoken','origurl');
         &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 349  sub sso_login { Line 349  sub sso_login {
                     my $lowest_load;                      my $lowest_load;
                     ($otherserver,undef,undef,undef,$lowest_load) = &Apache::lonnet::choose_server($domain);                      ($otherserver,undef,undef,undef,$lowest_load) = &Apache::lonnet::choose_server($domain);
                     if ($lowest_load > 100) {                      if ($lowest_load > 100) {
                         $otherserver = &Apache::lonnet::spareserver($lowest_load,$lowest_load,1,$domain);                          $otherserver = &Apache::lonnet::spareserver($r,$lowest_load,$lowest_load,1,$domain);
                     }                      }
                     if ($otherserver ne '') {                      if ($otherserver ne '') {
                         my @hosts = &Apache::lonnet::current_machine_ids();                          my @hosts = &Apache::lonnet::current_machine_ids();
Line 367  sub sso_login { Line 367  sub sso_login {
             foreach my $item (keys(%form)) {              foreach my $item (keys(%form)) {
                 $env{'form.'.$item} = $form{$item};                  $env{'form.'.$item} = $form{$item};
             }              }
             unless ($form{'symb'}) {              unless (($form{'symb'}) || ($form{'origurl'})) {
                 unless (($r->uri eq '/adm/roles') || ($r->uri eq '/adm/sso')) {                  unless (($r->uri eq '/adm/roles') || ($r->uri eq '/adm/sso')) {
                     $env{'form.origurl'} = $r->uri;                      $env{'form.origurl'} = $r->uri;
                 }                  }
Line 393  sub sso_login { Line 393  sub sso_login {
       'server'    => $r->dir_config('lonHostID'),        'server'    => $r->dir_config('lonHostID'),
       'sso.login' => 1        'sso.login' => 1
       );        );
             foreach my $item ('role','symb','iptoken') {              foreach my $item ('role','symb','iptoken','origurl') {
                 if (exists($form{$item})) {                  if (exists($form{$item})) {
                     $info{$item} = $form{$item};                      $info{$item} = $form{$item};
                 }                  }
             }              }
             unless ($info{'symb'}) {              unless (($info{'symb'}) || ($info{'origurl'})) {
                 unless (($r->uri eq '/adm/roles') || ($r->uri eq '/adm/sso')) {                  unless (($r->uri eq '/adm/roles') || ($r->uri eq '/adm/sso')) {
                     $info{'origurl'} = $r->uri;                       $info{'origurl'} = $r->uri; 
                 }                  }
Line 559  sub handler { Line 559  sub handler {
             my $hostname = $r->hostname();              my $hostname = $r->hostname();
             my $lonhost = &Apache::lonnet::host_from_dns($hostname);              my $lonhost = &Apache::lonnet::host_from_dns($hostname);
             if ($lonhost) {              if ($lonhost) {
                 my $actual = &Apache::lonnet::absolute_url($hostname);                  my $actual = &Apache::lonnet::absolute_url($hostname,1,1);
                 my $exphostname = &Apache::lonnet::hostname($lonhost);                  my $exphostname = &Apache::lonnet::hostname($lonhost);
                 my $expected = $Apache::lonnet::protocol{$lonhost}.'://'.$hostname;                  my $expected = $Apache::lonnet::protocol{$lonhost}.'://'.$hostname;
                 unless ($actual eq $expected) {                  unless ($actual eq $expected) {
Line 673  sub handler { Line 673  sub handler {
                         if ((!$env{'request.role.adv'}) && ($env{'acc.randomout'}) &&                          if ((!$env{'request.role.adv'}) && ($env{'acc.randomout'}) &&
                             ($env{'acc.randomout'}=~/\&\Q$poss_symb\E\&/)) {                              ($env{'acc.randomout'}=~/\&\Q$poss_symb\E\&/)) {
                             undef($poss_symb);                              undef($poss_symb);
                           } elsif ((!$env{'request.role.adv'}) && ($env{'acc.deeplinkout'}) &&
                                    ($env{'acc.deeplinkout'}=~/\&\Q$poss_symb\E\&/)) {
                               undef($poss_symb);
                         }                          }
                     }                      }
                 }                  }
Line 682  sub handler { Line 685  sub handler {
                     $access=&Apache::lonnet::allowed('bre',$requrl,'','','','',1);                      $access=&Apache::lonnet::allowed('bre',$requrl,'','','','',1);
                 }                  }
             } else {              } else {
                 $access=&Apache::lonnet::allowed('bre',$requrl);                  my $nodeeplinkcheck;
                   if (($check_access) && ($requrl =~ /\.(sequence|page)$/)) {
                       unless ($env{'form.navmap'}) {
                           if ($r->args ne '') {
                               &Apache::loncommon::get_unprocessed_cgi($r->args,['navmap']);
                               unless ($env{'form.navmap'}) {
                                   $nodeeplinkcheck = 1;
                               }
                           }
                       }
                   }
                   $access=&Apache::lonnet::allowed('bre',$requrl,'','','','','',$nodeeplinkcheck)
             }              }
         }          }
         if ($check_block) {          if ($check_block) {

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


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