--- loncom/lti/ltiutils.pm 2018/05/30 17:22:30 1.12 +++ loncom/lti/ltiutils.pm 2018/08/14 17:24:21 1.14 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA LTI interactions # -# $Id: ltiutils.pm,v 1.12 2018/05/30 17:22:30 raeburn Exp $ +# $Id: ltiutils.pm,v 1.14 2018/08/14 17:24:21 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -276,7 +276,7 @@ sub verify_lis_item { my ($has_action, $valid_for); if ($context eq 'grade') { $has_action = $ltitools->{'passback'}; - $valid_for = $ltitools->{'passbackvalid'} + $valid_for = $ltitools->{'passbackvalid'} * 86400; # convert days to seconds } elsif ($context eq 'roster') { $has_action = $ltitools->{'roster'}; $valid_for = $ltitools->{'rostervalid'}; @@ -382,13 +382,13 @@ sub set_service_secret { my $warning; my ($needsnew,$oldsecret,$lifetime); if ($name eq 'grade') { - $lifetime = $ltitools->{'passbackvalid'} + $lifetime = $ltitools->{'passbackvalid'} * 86400; # convert days to seconds } elsif ($name eq 'roster') { $lifetime = $ltitools->{'rostervalid'}; } - if ($toolsettings->{$name} eq '') { + if ($toolsettings->{$name.'secret'} eq '') { $needsnew = 1; - } elsif (($toolsettings->{$name.'date'} + $lifetime) < $now) { + } elsif (($toolsettings->{$name.'secretdate'} + $lifetime) < $now) { $oldsecret = $toolsettings->{$name.'secret'}; $needsnew = 1; } @@ -488,16 +488,18 @@ sub lti_provider_scope { $scope = 'map'; $realuri = $tail; } else { - my ($map,$resid,$url) = &Apache::lonnet::decode_symb($tail); + my $symb = $tail; + $symb =~ s{^/}{}; + my ($map,$resid,$url) = &Apache::lonnet::decode_symb($symb); $realuri = &Apache::lonnet::clutter($url); if ($url =~ /\.sequence$/) { $scope = 'map'; } else { $scope = 'resource'; - $realuri .= '?symb='.$tail; - $passkey = $tail; + $realuri .= '?symb='.$symb; + $passkey = $symb; if ($getunenc) { - $unencsymb = $tail; + $unencsymb = $symb; } } } @@ -507,16 +509,18 @@ sub lti_provider_scope { $scope = 'map'; $realuri = $tail; } else { - my ($map,$resid,$url) = &Apache::lonnet::decode_symb($tail); + my $symb = $tail; + $symb =~ s{^/?res/}{}; + my ($map,$resid,$url) = &Apache::lonnet::decode_symb($symb); $realuri = &Apache::lonnet::clutter($url); if ($url =~ /\.sequence$/) { $scope = 'map'; } else { $scope = 'resource'; - $realuri .= '?symb='.$tail; - $passkey = $tail; + $realuri .= '?symb='.$symb; + $passkey = $symb; if ($getunenc) { - $unencsymb = $tail; + $unencsymb = $symb; } } } @@ -562,7 +566,7 @@ sub lti_provider_scope { } elsif (($tail =~ m{^/$cdom/$cnum$}) || ($tail eq '')) { $scope = 'course'; $realuri = '/adm/navmaps'; - $passkey = $tail; + $passkey = ''; } if ($scope eq 'map') { $passkey = $realuri; @@ -588,7 +592,7 @@ sub get_roster { lti_message_type => 'basic-lis-readmembershipsforcontext', ext_ims_lis_memberships_id => $id, ); - my $hashref = &sign_params($url,$ckey,$secret,\%ltiparams); + my $hashref = &sign_params($url,$ckey,$secret,'',\%ltiparams); if (ref($hashref) eq 'HASH') { my $request=new HTTP::Request('POST',$url); $request->content(join('&',map { @@ -671,7 +675,7 @@ sub send_grade { result_statusofresult => 'final', result_date => $date, ); - my $hashref = &sign_params($url,$ckey,$secret,\%ltiparams); + my $hashref = &sign_params($url,$ckey,$secret,'',\%ltiparams); if (ref($hashref) eq 'HASH') { my $request=new HTTP::Request('POST',$url); $request->content(join('&',map {