--- loncom/auth/switchserver.pm 2017/02/25 20:00:36 1.36 +++ loncom/auth/switchserver.pm 2017/11/30 15:14:51 1.38 @@ -1,7 +1,7 @@ # The LearningOnline Network # Switch Servers Handler # -# $Id: switchserver.pm,v 1.36 2017/02/25 20:00:36 raeburn Exp $ +# $Id: switchserver.pm,v 1.38 2017/11/30 15:14:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -129,8 +129,12 @@ sub handler { $skip_canhost_check = 1; } } elsif ($env{'form.role'} =~ m{^[ac]a\./($match_domain)/($match_username)$}) { - if (&Apache::lonnet::homeserver($2,$1) eq $env{'form.otherserver'}) { - $skip_canhost_check = 1; + my ($audom,$auname) = ($1,$2); + if (&Apache::lonnet::homeserver($auname,$audom) eq $env{'form.otherserver'}) { + if ((&Apache::lonnet::will_trust('othcoau',$audom,$env{'user.domain'})) && + (&Apache::lonnet::will_trust('coremau',$env{'user.domain'},$audom))) { + $skip_canhost_check = 1; + } } } } @@ -224,6 +228,21 @@ sub handler { if ($env{'request.sso.reloginserver'}) { $info{'sso.reloginserver'} = $env{'request.sso.reloginserver'}; } + if ($env{'request.lti.login'}) { + $info{'lti.login'} = $env{'request.lti.login'}; + } + if ($env{'request.lti.passbackid'}) { + $info{'lti.passbackid'} = $env{'request.lti.passbackid'}; + } + if ($env{'request.lti.passbackurl'}) { + $info{'lti.passbackurl'} = $env{'request.lti.passbackurl'}; + } + if ($env{'request.lti.rosterid'}) { + $info{'lti.rosterid'} = $env{'request.lti.rosterid'}; + } + if ($env{'request.lti.rosterurl'}) { + $info{'lti.rosterurl'} = $env{'request.lti.rosterurl'}; + } my $token = &Apache::lonnet::tmpput(\%info,$env{'form.otherserver'}); my $url =$protocol.'://'.$switch_to.'/adm/login?'. 'domain='.$env{'user.domain'}.