--- loncom/auth/lonacc.pm 2014/05/05 23:17:12 1.155 +++ loncom/auth/lonacc.pm 2014/06/17 23:22:10 1.157 @@ -1,7 +1,7 @@ # The LearningOnline Network # Cookie Based Access Handler # -# $Id: lonacc.pm,v 1.155 2014/05/05 23:17:12 raeburn Exp $ +# $Id: lonacc.pm,v 1.157 2014/06/17 23:22:10 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -283,7 +283,7 @@ sub sso_login { my ($r,$handle,$username) = @_; my $lonidsdir=$r->dir_config('lonIDsDir'); - if (($r->user eq '') || ($username ne '') || + if (($r->user eq '') || ($username ne '') || ($r->user eq 'public:public') || (defined($env{'user.name'}) && (defined($env{'user.domain'})) && ($handle ne ''))) { # not an SSO case or already logged in @@ -473,7 +473,7 @@ sub handler { } $env{'request.filename'} = $r->filename; $env{'request.noversionuri'} = &Apache::lonnet::deversion($requrl); - my $suppext; + my ($suppext,$checkabsolute); if ($requrl =~ m{^/adm/wrapper/ext/}) { my $query = $r->args; if ($query) { @@ -494,6 +494,9 @@ sub handler { $env{'request.external.querystring'} = $preserved; } } + if ($env{'request.course.id'}) { + $checkabsolute = 1; + } } elsif ($env{'request.course.id'} && (($requrl =~ m{^/adm/$match_domain/$match_username/aboutme$}) || ($requrl =~ m{^/public/$cdom/$cnum/syllabus$}))) { @@ -508,6 +511,20 @@ sub handler { } } } + if ($requrl =~ m{^/public/$cdom/$cnum/syllabus$}) { + $checkabsolute = 1; + } + } + if ($checkabsolute) { + my $hostname = $r->hostname(); + my $lonhost = &Apache::lonnet::host_from_dns($hostname); + if ($lonhost) { + my $actual = &Apache::lonnet::absolute_url($hostname); + my $expected = $Apache::lonnet::protocol{$lonhost}.'://'.$hostname; + unless ($actual eq $expected) { + $env{'request.use_absolute'} = $expected; + } + } } # -------------------------------------------------------- Load POST parameters