--- loncom/lti/ltiutils.pm 2018/04/14 02:30:07 1.6 +++ loncom/lti/ltiutils.pm 2018/05/15 04:33:17 1.9 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA LTI interactions # -# $Id: ltiutils.pm,v 1.6 2018/04/14 02:30:07 raeburn Exp $ +# $Id: ltiutils.pm,v 1.9 2018/05/15 04:33:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -324,6 +324,7 @@ sub sign_params { if ($sigmethod eq '') { $sigmethod = 'HMAC-SHA1'; } + srand( time() ^ ($$ + ($$ << 15)) ); # Seed rand. my $nonce = Digest::SHA::sha1_hex(sprintf("%06x%06x",rand(0xfffff0),rand(0xfffff0))); my $request = Net::OAuth->request("request token")->new( consumer_key => $key, @@ -481,13 +482,27 @@ sub lti_provider_scope { $scope = 'map'; $realuri = $tail; } else { - $scope = 'resource'; my ($map,$resid,$url) = &Apache::lonnet::decode_symb($tail); $realuri = &Apache::lonnet::clutter($url); - if (($url =~ /\.sequence$/) && - ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) { - $realuri .= '?navmap=1'; + if ($url =~ /\.sequence$/) { + $scope = 'map'; } else { + $scope = 'resource'; + $realuri .= '?symb='.$tail; + } + } + } elsif ($tail =~ m{^/res/$match_domain/$match_username/.+\.(?:sequence|page)(|___\d+___.+)$}) { + my $rest = $1; + if ($rest eq '') { + $scope = 'map'; + $realuri = $tail; + } else { + my ($map,$resid,$url) = &Apache::lonnet::decode_symb($tail); + $realuri = &Apache::lonnet::clutter($url); + if ($url =~ /\.sequence$/) { + $scope = 'map'; + } else { + $scope = 'resource'; $realuri .= '?symb='.$tail; } } @@ -516,18 +531,12 @@ sub lti_provider_scope { if ((&Apache::lonnet::EXT('resource.0.encrypturl',$symb) =~ /^yes$/i) && (!$env{'request.role.adv'})) { $realuri = &Apache::lonenc::encrypted(&Apache::lonnet::clutter($url)); - if (($url =~ /\.sequence$/) && - ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) { - $realuri .= '?navmap=1'; - } else { + if ($scope eq 'resource') { $realuri .= '?symb='.&Apache::lonenc::encrypted($symb); } } else { $realuri = &Apache::lonnet::clutter($url); - if (($url =~ /\.sequence$/) && - ($env{'course.'.$env{'request.course.id'}.'.type'} ne 'Placement')) { - $realuri .= '?navmap=1'; - } else { + if ($scope eq 'resource') { $realuri .= '?symb='.$symb; } }