--- 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;