Diff for /loncom/lti/ltiauth.pm between versions 1.16 and 1.19

version 1.16, 2018/08/14 21:03:39 version 1.19, 2019/07/18 18:28:46
Line 339  sub handler { Line 339  sub handler {
     }      }
   
 #  #
   # Determine if a username is required from the domain
   # configuration for the specific LTI Consumer
   #
   
       if (!$lti{$itemid}{'requser'}) {
           if ($tail =~ m{^/tiny/($match_domain)/(\w+)$}) {
               foreach my $key (%{$params}) {
                   delete($env{'form.'.$key});
               }
               my $ltoken = &Apache::lonnet::tmpput({'linkprot' => $itemid.':'.$tail},
                                                      $lonhost);
               if ($ltoken) {
                   $r->internal_redirect($tail.'?ltoken='.$ltoken);
                   $r->set_handlers('PerlHandler'=> undef);
               } else {
                   &invalid_request($r,9);    
               }
           } else {
               &invalid_request($r,10);
           }
           return OK;
       }
   
   #
 # Determine if source of username matches requirement from the   # Determine if source of username matches requirement from the 
 # domain configuration for the specific LTI Consumer.  # domain configuration for the specific LTI Consumer.
 #   # 
Line 394  sub handler { Line 418  sub handler {
             if ($consumers{$sourcecrs} =~ /^$match_courseid$/) {              if ($consumers{$sourcecrs} =~ /^$match_courseid$/) {
                 my $crshome = &Apache::lonnet::homeserver($consumers{$sourcecrs},$cdom);                  my $crshome = &Apache::lonnet::homeserver($consumers{$sourcecrs},$cdom);
                 if ($crshome =~ /(con_lost|no_host|no_such_host)/) {                  if ($crshome =~ /(con_lost|no_host|no_such_host)/) {
                     &invalid_request($r,9);                      &invalid_request($r,11);
                     return OK;                      return OK;
                 } else {                  } else {
                     $posscnum = $consumers{$sourcecrs};                      $posscnum = $consumers{$sourcecrs};
Line 406  sub handler { Line 430  sub handler {
     if ($urlcnum ne '') {      if ($urlcnum ne '') {
         if ($posscnum ne '') {          if ($posscnum ne '') {
             if ($posscnum ne $urlcnum) {              if ($posscnum ne $urlcnum) {
                 &invalid_request($r,10);                  &invalid_request($r,12);
                 return OK;                  return OK;
             } else {              } else {
                 $cnum = $posscnum;                  $cnum = $posscnum;
Line 414  sub handler { Line 438  sub handler {
         } else {          } else {
             my $crshome = &Apache::lonnet::homeserver($urlcnum,$cdom);              my $crshome = &Apache::lonnet::homeserver($urlcnum,$cdom);
             if ($crshome =~ /(con_lost|no_host|no_such_host)/) {              if ($crshome =~ /(con_lost|no_host|no_such_host)/) {
                 &invalid_request($r,11);                  &invalid_request($r,13);
                 return OK;                  return OK;
             } else {              } else {
                 $cnum = $urlcnum;                  $cnum = $urlcnum;
Line 479  sub handler { Line 503  sub handler {
                                                     $domdesc,\%data,\%alerts,\%rulematch,                                                      $domdesc,\%data,\%alerts,\%rulematch,
                                                     \%inst_results,\%curr_rules,%got_rules);                                                      \%inst_results,\%curr_rules,%got_rules);
                 if ($result eq 'notallowed') {                  if ($result eq 'notallowed') {
                     &invalid_request($r,12);                      &invalid_request($r,14);
                 } elsif ($result eq 'ok') {                  } elsif ($result eq 'ok') {
                     if (($ltiroles[0] eq 'Instructor') && ($lcroles[0] eq 'cc') && ($lti{$itemid}{'mapcrs'}) &&                      if (($ltiroles[0] eq 'Instructor') && ($lcroles[0] eq 'cc') && ($lti{$itemid}{'mapcrs'}) &&
                         ($lti{$itemid}{'makecrs'})) {                          ($lti{$itemid}{'makecrs'})) {
Line 488  sub handler { Line 512  sub handler {
                         }                          }
                     }                      }
                 } else {                  } else {
                     &invalid_request($r,13);                      &invalid_request($r,15);
                     return OK;                      return OK;
                 }                  }
             } else {              } else {
                 &invalid_request($r,14);                  &invalid_request($r,16);
                 return OK;                  return OK;
             }              }
         }          }
     } else {      } else {
         &invalid_request($r,15);          &invalid_request($r,17);
         return OK;          return OK;
     }      }
   
Line 519  sub handler { Line 543  sub handler {
                              $symb,$cdom,$cnum,$params,\@ltiroles,$lti{$itemid},\@lcroles,                               $symb,$cdom,$cnum,$params,\@ltiroles,$lti{$itemid},\@lcroles,
                              $reqcrs,$sourcecrs);                               $reqcrs,$sourcecrs);
             } else {              } else {
                 &invalid_request($r,16);                  &invalid_request($r,18);
             }              }
         } else {          } else {
             &invalid_request($r,17);              &invalid_request($r,19);
         }          }
         return OK;          return OK;
     }      }
Line 608  sub handler { Line 632  sub handler {
             }              }
         }          }
         if ($reqrole eq '') {          if ($reqrole eq '') {
             &invalid_request($r,18);              &invalid_request($r,20);
             return OK;              return OK;
         } else {          } else {
             unless (%crsenv) {              unless (%crsenv) {
Line 618  sub handler { Line 642  sub handler {
             my $default_enrollment_end_date   = $crsenv{'default_enrollment_end_date'};              my $default_enrollment_end_date   = $crsenv{'default_enrollment_end_date'};
             my $now = time;              my $now = time;
             if ($default_enrollment_end_date && $default_enrollment_end_date <= $now) {              if ($default_enrollment_end_date && $default_enrollment_end_date <= $now) {
                 &invalid_request($r,19);                  &invalid_request($r,21);
                 return OK;                  return OK;
             } elsif ($default_enrollment_start_date && $default_enrollment_start_date >$now) {              } elsif ($default_enrollment_start_date && $default_enrollment_start_date >$now) {
                 &invalid_request($r,20);                  &invalid_request($r,22);
                 return OK;                  return OK;
             } else {              } else {
                 $selfenrollrole = $reqrole.'./'.$cdom.'/'.$cnum;                  $selfenrollrole = $reqrole.'./'.$cdom.'/'.$cnum;
Line 725  sub lti_session { Line 749  sub lti_session {
             }              }
         }          }
     }      }
       my $protocol = 'http';
       if ($ENV{'SERVER_PORT'} == 443) {
           $protocol = 'https';
       }
     if (($is_balancer) && (!$hosthere)) {      if (($is_balancer) && (!$hosthere)) {
         # login but immediately go to switch server.          # login but immediately go to switch server.
         &Apache::lonauth::success($r,$uname,$udom,$uhome,'noredirect');          &Apache::lonauth::success($r,$uname,$udom,$uhome,'noredirect');
           if (($ltihash->{'callback'}) && ($params->{$ltihash->{'callback'}})) {
               &LONCAPA::ltiutils::setup_logout_callback($uname,$udom,$otherserver,
                                                         $ltihash->{'key'},
                                                         $ltihash->{'secret'},
                                                         $params->{$ltihash->{'callback'}},
                                                         $r->dir_config('ltiIDsDir'),
                                                         $protocol,$r->hostname);
           }
         if ($symb) {          if ($symb) {
             $env{'form.symb'} = $symb;              $env{'form.symb'} = $symb;
             $env{'request.lti.uri'} = $tail;              $env{'request.lti.uri'} = $tail;
Line 756  sub lti_session { Line 792  sub lti_session {
             $env{'request.lti.sourcecrs'} = $sourcecrs;              $env{'request.lti.sourcecrs'} = $sourcecrs;
         }          }
         if ($selfenrollrole) {          if ($selfenrollrole) {
             $env{'request.lti.selfenroll'} = $selfenrollrole;              $env{'request.lti.selfenrollrole'} = $selfenrollrole;
             $env{'request.lti.sourcecrs'} = $sourcecrs;              $env{'request.lti.sourcecrs'} = $sourcecrs;
         }          }
         if ($ltihash->{'passback'}) {          if ($ltihash->{'passback'}) {
Line 794  sub lti_session { Line 830  sub lti_session {
         foreach my $key (%{$params}) {          foreach my $key (%{$params}) {
             delete($env{'form.'.$key});              delete($env{'form.'.$key});
         }          }
           if (($ltihash->{'callback'}) && ($params->{$ltihash->{'callback'}})) {
               &LONCAPA::ltiutils::setup_logout_callback($uname,$udom,$lonhost,
                                                         $ltihash->{'key'},
                                                         $ltihash->{'secret'},
                                                         $params->{$ltihash->{'callback'}},
                                                         $r->dir_config('ltiIDsDir'),
                                                         $protocol,$r->hostname);
           }
         my $ip = $r->get_remote_host();          my $ip = $r->get_remote_host();
         my %info=('ip'        => $ip,          my %info=('ip'        => $ip,
                   'domain'    => $udom,                    'domain'    => $udom,

Removed from v.1.16  
changed lines
  Added in v.1.19


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