--- loncom/auth/publiccheck.pm 2014/12/01 22:52:54 1.24 +++ loncom/auth/publiccheck.pm 2023/12/28 18:14:08 1.29 @@ -1,7 +1,7 @@ # The LearningOnline Network # Cookie Based Access Handler # -# $Id: publiccheck.pm,v 1.24 2014/12/01 22:52:54 raeburn Exp $ +# $Id: publiccheck.pm,v 1.29 2023/12/28 18:14:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -92,7 +92,7 @@ sub process_public { my $cookie=&Apache::lonauth::success($r,'public','public','public'); my $lonidsdir=$r->dir_config('lonIDsDir'); &Apache::lonnet::transfer_profile_to_env($lonidsdir,$cookie); - $r->err_header_out('Set-cookie',"lonID=$cookie; path=/"); + $r->err_header_out('Set-cookie',"lonPubID=$cookie; path=/; HttpOnly"); } &Apache::lonacc::get_posted_cgi($r); $env{'request.state'} = "published"; @@ -105,11 +105,16 @@ sub process_portfolio { my ($r,$udom,$unum,$file_name,$group) = @_; my $current_perms = &Apache::lonnet::get_portfile_permissions($udom,$unum); my %access_controls = &Apache::lonnet::get_access_controls($current_perms,$group,$file_name); + return unless (ref($access_controls{$file_name}) eq 'HASH'); my $access = ''; my $now = time; - my $clientip = $r->get_remote_host(); + my $clientip = &Apache::lonnet::get_requestor_ip($r); + my $portaccess = &Apache::lonnet::usertools_access($unum,$udom,'portaccess',undef,'tools'); foreach my $key (keys(%{$access_controls{$file_name}})) { my ($num,$scope,$end,$start) = ($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/); + if (!$portaccess) { + next unless ($scope eq 'ip'); + } if ($start > $now) { next; } @@ -120,7 +125,7 @@ sub process_portfolio { $access = 'public'; last; } - if ($scope eq 'ip') { + if (($scope eq 'ip') || ($scope eq 'userip')) { if (ref($access_controls{$file_name}{$key}) eq 'HASH') { if (ref($access_controls{$file_name}{$key}{'ip'}) eq 'ARRAY') { if (&Apache::loncommon::check_ip_acc(join(',',@{$access_controls{$file_name}{$key}{'ip'}}),$clientip)) {