--- loncom/auth/lonauth.pm 2018/04/21 21:29:31 1.151 +++ loncom/auth/lonauth.pm 2018/07/04 16:58:19 1.154 @@ -1,7 +1,7 @@ # The LearningOnline Network # User Authentication Module # -# $Id: lonauth.pm,v 1.151 2018/04/21 21:29:31 raeburn Exp $ +# $Id: lonauth.pm,v 1.154 2018/07/04 16:58:19 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -76,8 +76,9 @@ sub success { # ----------------------------------------------------------- Get cookies ready my ($securecookie,$defaultcookie); - if ($ENV{'SERVER_PORT'} == 443) { - $securecookie="lonID=$cookie; path=/; HttpOnly; secure"; + my $ssl = $r->subprocess_env('https'); + if ($ssl) { + $securecookie="lonSID=$cookie; path=/; HttpOnly; secure"; my $lonidsdir=$r->dir_config('lonIDsDir'); if (($lonidsdir) && (-e "$lonidsdir/$cookie.id")) { my $linkname=substr(Digest::MD5::md5_hex(Digest::MD5::md5_hex(time(). {}. rand(). $$)), 0, 32).'_linked'; @@ -88,7 +89,7 @@ sub success { "$lonidsdir/$linkname.id"); 1 }; if ($made_symlink) { $defaultcookie = "lonLinkID=$linkname; path=/; HttpOnly;"; - &Apache::lonnet::appenv({'user.linkedenv' => "$lonidsdir/$linkname.id"}); + &Apache::lonnet::appenv({'user.linkedenv' => $linkname}); } } } else { @@ -106,6 +107,11 @@ sub success { $r->headers_out->add('Set-cookie' => $defaultcookie); } $r->send_http_header; + if (ref($form) eq 'HASH') { + $form->{'lti.reqcrs'} = $env{'request.lti.reqcrs'}; + $form->{'lti.reqrole'} = $env{'request.lti.reqrole'}; + $form->{'lti.sourcecrs'} = $env{'request.lti.sourcecrs'}; + } &Apache::ltiauth::lti_reqcrs($r,$domain,$form,$username,$domain); return; } @@ -165,7 +171,6 @@ sub success { $windowname .= 'lti'; } my $windowinfo = Apache::lonhtmlcommon::scripttag('self.name="'.$windowname.'";'); - my $header = ''; my $brcrum = [{'href' => '', 'text' => 'Successful Login'},]; my $args = {'bread_crumbs' => $brcrum,}; @@ -202,20 +207,40 @@ sub success { } $r->send_http_header; - my $start_page; + my ($start_page,$js,$pagebody,$end_page); if ($env{'request.lti.login'}) { - $args = {'only_body' => 1,}; - $start_page=&Apache::loncommon::start_page('',$header,$args); + $args = {'only_body' => 1}; + if ($env{'request.lti.target'} eq '') { + my $ltitarget = (($destination =~ /\?/) ? '&' : '?'). + 'ltitarget=iframe'; + $js = <<"ENDJS"; + + + +ENDJS + $args->{'add_entries'} = {'onload' => "javascript:setLTItarget();"}; + $pagebody = ''; + } else { + $args->{'redirect'} = [0,$destination,1]; + } + $start_page=&Apache::loncommon::start_page('',$js,$args); } else { + $args->{'redirect'} = [0,$destination]; $start_page=&Apache::loncommon::start_page('Successful Login', - $header,$args); - } - my $end_page =&Apache::loncommon::end_page(); - - my $continuelink=''.&mt('Continue').''; + $js,$args); - my $pagebody; - unless ($env{'request.lti.login'}) { my %lt=&Apache::lonlocal::texthash( 'wel' => 'Welcome', 'pro' => 'Login problems?', @@ -227,11 +252,11 @@ sub success { $pagebody .= '

'.$lt{'pro'}.'

'; } } + $end_page = &Apache::loncommon::end_page(); $r->print(<