--- loncom/lti/ltiauth.pm 2018/03/23 01:01:47 1.6 +++ loncom/lti/ltiauth.pm 2018/04/14 02:30:07 1.8 @@ -1,7 +1,7 @@ # The LearningOnline Network # Basic LTI Authentication Module # -# $Id: ltiauth.pm,v 1.6 2018/03/23 01:01:47 raeburn Exp $ +# $Id: ltiauth.pm,v 1.8 2018/04/14 02:30:07 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -484,7 +484,11 @@ sub handler { } if ($lcauth eq '') { $lcauth = $lti{$itemid}{'lcauth'}; - $lcauthparm = $lti{$itemid}{'lcauthparm'}; + if ($lcauth eq 'internal') { + $lcauthparm = &create_passwd(); + } else { + $lcauthparm = $lti{$itemid}{'lcauthparm'}; + } } } else { &invalid_request($r,12); @@ -811,11 +815,14 @@ sub lti_session { &Apache::lonauth::success($r,$uname,$udom,$uhome,'noredirect'); if ($symb) { $env{'form.symb'} = $symb; + $env{'request.lti.uri'} = $symb; } else { if ($mapurl) { $env{'form.origurl'} = $mapurl; + $env{'request.lti.uri'} = $mapurl; } elsif ($tail =~ m{^\Q/tiny/$cdom/\E\w+$}) { $env{'form.origurl'} = $tail; + $env{'request.lti.uri'} = $tail; } else { unless ($tail eq '/adm/roles') { $env{'form.origurl'} = '/adm/navmaps'; @@ -851,6 +858,9 @@ sub lti_session { } } $env{'request.lti.login'} = 1; + if ($params->{'launch_presentation_document_target'}) { + $env{'request.lti.target'} = $params->{'launch_presentation_document_target'}; + } foreach my $key (%{$params}) { delete($env{'form.'.$key}); } @@ -872,6 +882,7 @@ sub lti_session { 'username' => $uname, 'server' => $lonhost, 'lti.login' => 1, + 'lti.uri' => $tail, ); if ($role) { $info{'role'} = $role; @@ -903,6 +914,10 @@ sub lti_session { $info{'lti.rosterurl'} = $params->{'ext_ims_lis_memberships_url'}; } } + if ($params->{'launch_presentation_document_target'}) { + $info{'lti.target'} = $params->{'launch_presentation_document_target'}; + } + unless ($info{'symb'}) { if ($mapurl) { $info{'origurl'} = $mapurl; @@ -940,4 +955,24 @@ sub invalid_request { return; } +sub create_passwd { + my $passwd = ''; + my @letts = ("a".."z"); + for (my $i=0; $i<8; $i++) { + my $lettnum = int(rand(2)); + my $item = ''; + if ($lettnum) { + $item = $letts[int(rand(26))]; + my $uppercase = int(rand(2)); + if ($uppercase) { + $item =~ tr/a-z/A-Z/; + } + } else { + $item = int(rand(10)); + } + $passwd .= $item; + } + return ($passwd); +} + 1;