Diff for /loncom/auth/lonroles.pm between versions 1.358 and 1.364

version 1.358, 2021/11/30 14:16:13 version 1.364, 2022/05/25 18:04:17
Line 181  ENDREDIR Line 181  ENDREDIR
   
 sub finish_loading_course {  sub finish_loading_course {
     my ($r,$msg,$url) = @_;      my ($r,$msg,$url) = @_;
     my $link = '<div id="LC_course_loaded" style="display:none"><a href="'.$url.'">'.&mt('Continue').'</a></div>';      my $link = '<div id="LC_course_loaded" style="display:none"><a href="'.
                  &HTML::Entities::encode($url,'"<>&').'">'.&mt('Continue').'</a></div>';
     my $end_page = &Apache::loncommon::end_page();      my $end_page = &Apache::loncommon::end_page();
     my $js_url = &js_escape($url);      my $js_url = &js_escape($url);
     $r->print(<<END);      $r->print(<<END);
Line 195  $msg Line 196  $msg
     var url = "$js_url";      var url = "$js_url";
     \$(location).attr('href',url);      \$(location).attr('href',url);
 });  });
   // ]]>
 </script>  </script>
 $link  $link
 $end_page  $end_page
Line 277  sub handler { Line 279  sub handler {
         $update = $then;          $update = $then;
     }      }
   
     my ($norolelist,$blocked_by_ip,$blocked_type,$blocked_ipaddr);      my ($norolelist,$blocked_by_ip,$blocked_type,$clientip);
       $clientip = &Apache::lonnet::get_requestor_ip($r);
     if (($env{'request.course.id'}) && ($env{'request.deeplink.login'})) {      if (($env{'request.course.id'}) && ($env{'request.deeplink.login'})) {
         my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};          my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
         my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};          my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
Line 358  sub handler { Line 361  sub handler {
                         $ipaccessref = &Apache::lonnet::do_cache_new('ipaccess',$cdom,$domconfig{'ipaccess'},1800);                          $ipaccessref = &Apache::lonnet::do_cache_new('ipaccess',$cdom,$domconfig{'ipaccess'},1800);
                     }                      }
                     if (ref($ipaccessref) eq 'HASH') {                      if (ref($ipaccessref) eq 'HASH') {
                         my $remote_ip = &Apache::lonnet::get_requestor_ip();  
                         foreach my $id (keys(%{$ipaccessref})) {                          foreach my $id (keys(%{$ipaccessref})) {
                             if (ref($ipaccessref->{$id}) eq 'HASH') {                              if (ref($ipaccessref->{$id}) eq 'HASH') {
                                 my $range = $ipaccessref->{$id}->{'ip'};                                  my $range = $ipaccessref->{$id}->{'ip'};
                                 if ($range) {                                  if ($range) {
                                     my $type = 'exclude';                                      my $type = 'exclude';
                                     if (&Apache::lonnet::ip_match($remote_ip,$range)) {                                      if (&Apache::lonnet::ip_match($clientip,$range)) {
                                         $type = 'include';                                          $type = 'include';
                                     }                                      }
                                     if (ref($ipaccessref->{$id}->{'courses'}) eq 'HASH') {                                      if (ref($ipaccessref->{$id}->{'courses'}) eq 'HASH') {
Line 386  sub handler { Line 388  sub handler {
                                 }                                  }
                             }                              }
                         }                          }
                         unless ($showrole) {  
                             $blocked_ipaddr = $remote_ip;  
                         }  
                     }                      }
                 }                  }
             }              }
Line 783  ENDCLOSE Line 782  ENDCLOSE
                         $r->rflush();                          $r->rflush();
                         my ($msg,$blockcrit,$critmsg_check);                          my ($msg,$blockcrit,$critmsg_check);
                         $critmsg_check = 1;                          $critmsg_check = 1;
                         $blockcrit = &Apache::loncommon::blocking_status('alert',$cnum,$cdom,undef,1);                          $blockcrit = &Apache::loncommon::blocking_status('alert',$clientip,$cnum,$cdom,undef,1);
                         if ($blockcrit) {                          if ($blockcrit) {
                             my $checkrole = "cm./$cdom/$cnum";                              my $checkrole = "cm./$cdom/$cnum";
                             if ($csec ne '') {                              if ($csec ne '') {
Line 900  ENDCLOSE Line 899  ENDCLOSE
                                         ($env{'request.lti.rosterid'} || $env{'request.lti.passbackid'})) {                                          ($env{'request.lti.rosterid'} || $env{'request.lti.passbackid'})) {
                                         &process_lti($r,$cdom,$cnum);                                          &process_lti($r,$cdom,$cnum);
                                     }                                      }
                                       if ($env{'request.deeplink.login'}) {
                                           &set_deeplink_target($cnum,$cdom);
                                       }
                                     $msg = '<p>'.&mt('Entering [_1] ...',                                      $msg = '<p>'.&mt('Entering [_1] ...',
                                                      $env{'course.'.$cdom.'_'.$cnum.'.description'}).                                                       $env{'course.'.$cdom.'_'.$cnum.'.description'}).
                                            '</p>';                                             '</p>';
Line 931  ENDCLOSE Line 933  ENDCLOSE
                                     ($env{'request.lti.rosterid'} || $env{'request.lti.passbackid'})) {                                      ($env{'request.lti.rosterid'} || $env{'request.lti.passbackid'})) {
                                     &process_lti($r,$cdom,$cnum);                                      &process_lti($r,$cdom,$cnum);
                                 }                                  }
                                   if ($env{'request.deeplink.login'}) {
                                       &set_deeplink_target($cnum,$cdom);
                                   }
  # Check to see if the user is a CC entering a course    # Check to see if the user is a CC entering a course 
  # for the first time   # for the first time
  if ((($role eq 'cc') || ($role eq 'co'))    if ((($role eq 'cc') || ($role eq 'co')) 
Line 1354  ENDHEADER Line 1359  ENDHEADER
             }              }
             $r->print('<h3><span class="LC_error">'.              $r->print('<h3><span class="LC_error">'.
                       &mt('The [_1] you selected is not available for access with a [_2] role from your current IP address: [_3].',                        &mt('The [_1] you selected is not available for access with a [_2] role from your current IP address: [_3].',
                           lc($blocked_type),$blocked_role,$blocked_ipaddr).                            lc($blocked_type),$blocked_role,$clientip).
                       '</span></h3>');                        '</span></h3>');
         }          }
     }      }
Line 1994  sub findcourse_advice { Line 1999  sub findcourse_advice {
     } else {      } else {
         $r->print('<p>'.&mt('If you were expecting to see an active role listed for a particular course, that course may not have been created yet.').'</p>');          $r->print('<p>'.&mt('If you were expecting to see an active role listed for a particular course, that course may not have been created yet.').'</p>');
         if ($elapsed > 600) {          if ($elapsed > 600) {
             $r->print('<p>'.&mt('You may also have been assigned to a course in the time since you last logged-in, or checked for changes').              $r->print('<p>'.&mt('You may also have been assigned to a course in the time since you last logged-in, or checked for changes.').
                       '<br />'.                        '<br />'.
                       &mt('If that is the case you can use the "Check for changes" link in the gray Functions bar to update the list of your available course roles.').'</p>');                        &mt('If that is the case you can use the "Check for changes" link in the gray Functions bar to update the list of your available course roles.').'</p>');
         }            }  
Line 3549  sub ltienroll { Line 3554  sub ltienroll {
     }      }
 }  }
   
   sub set_deeplink_target {
       my ($cnum,$cdom) = @_;
       if (($cnum ne '') && ($cdom ne '')) {
           my $deeplink_symb = &Apache::loncommon::deeplink_login_symb($cnum,$cdom);
           if ($deeplink_symb ne '') {
               my $deeplink;
               if ($deeplink_symb =~ /\.(page|sequence)$/) {
                   my $mapname = &Apache::lonnet::deversion((&Apache::lonnet::decode_symb($deeplink_symb))[2]);
                   my $navmap = Apache::lonnavmaps::navmap->new();
                   if (ref($navmap)) {
                       $deeplink = $navmap->get_mapparam(undef,$mapname,'0.deeplink');
                   }
               } elsif ($deeplink_symb ne '') {
                   $deeplink = &Apache::lonnet::EXT('resource.0.deeplink',$deeplink_symb);
               }
               if ($deeplink ne '') {
                   my ($state,$others,$listed,$scope,$protect,$display,$target) = split(/,/,$deeplink);
                   if ($target ne '') {
                       &Apache::lonnet::appenv({'request.deeplink.target' => $target});
                   } elsif (exists($env{'request.deeplink.target'})) {
                       &Apache::lonnet::delenv('request.deeplink.target');
                   }
               }
           }
       }
       return;
   }
   
 1;  1;
 __END__  __END__
   

Removed from v.1.358  
changed lines
  Added in v.1.364


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