--- loncom/auth/blockedaccess.pm 2020/09/28 00:10:27 1.5 +++ loncom/auth/blockedaccess.pm 2021/11/30 15:55:40 1.7 @@ -1,7 +1,7 @@ # The LearningOnline Network # Information about blocking status for Portfolio files # -# $Id: blockedaccess.pm,v 1.5 2020/09/28 00:10:27 raeburn Exp $ +# $Id: blockedaccess.pm,v 1.7 2021/11/30 15:55:40 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,21 +42,31 @@ sub handler { return OK if $r->header_only; &Apache::lonlocal::get_language_handle($r); + my $ver_origurl = $r->uri; my $origurl = &Apache::lonnet::deversion($r->uri); - my ($blocked,$blocktext); + my ($blocked,$blocktext,$clientip); + $clientip = &Apache::lonnet::get_requestor_ip($r); if (&Apache::lonnet::is_portfolio_url($origurl)) { my ($type,$udom,$uname,$file_name,$group) = &Apache::lonnet::parse_portfolio_url($origurl); ($blocked,$blocktext) = - &Apache::loncommon::blocking_status('port',$uname,$udom); + &Apache::loncommon::blocking_status('port',$clientip,$uname,$udom); } else { if ($env{'request.course.id'}) { my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $symb = $env{'request.symb'}; + my $url = $origurl; + # If no symb, and url is on not map, check for referrer + unless (($symb) || &Apache::lonnet::is_on_map($url) || ($origurl eq '/adm/blockedaccess')) { + my $refuri = $env{'httpref.'.$origurl} || $env{'httpref.'.$ver_origurl}; + if ($refuri) { + $url = $refuri; + } + } ($blocked,$blocktext) = - &Apache::loncommon::blocking_status('docs',$cnum,$cdom,$origurl,1,$symb,'blockedaccess'); + &Apache::loncommon::blocking_status('docs',$clientip,$cnum,$cdom,$url,1,$symb,'blockedaccess'); } } if ($blocked) {