Diff for /loncom/auth/publiccheck.pm between versions 1.19 and 1.24.2.2

version 1.19, 2010/03/17 19:41:11 version 1.24.2.2, 2021/01/04 03:53:20
Line 64  sub handler { Line 64  sub handler {
  || $requrl=~m|^/adm/help/.*\.hlp$|   || $requrl=~m|^/adm/help/.*\.hlp$|
  || $requrl=~m|^/adm/[^/]+/[^/]+/aboutme/portfolio$|   || $requrl=~m|^/adm/[^/]+/[^/]+/aboutme/portfolio$|
  || (&Apache::lonnet::metadata($requrl,'copyright') eq 'public')    || (&Apache::lonnet::metadata($requrl,'copyright') eq 'public') 
     || $requrl=~m|^/adm/blockingstatus/.*$|) {       || $requrl=~m|^/adm/blockingstatus/.*$|) {
         &process_public($r,$requrl);          &process_public($r,$requrl);
         return OK;          return OK;
     } elsif (&Apache::lonnet::is_portfolio_url($requrl)) {      } elsif (&Apache::lonnet::is_portfolio_url($requrl)) {
  my (undef,$udom,$unum,$file_name,$group) =    my (undef,$udom,$unum,$file_name,$group) = 
     &Apache::lonnet::parse_portfolio_url($requrl);      &Apache::lonnet::parse_portfolio_url($requrl);
         my $access = &process_portfolio($udom,$unum,$file_name,$group);          my $access = &process_portfolio($r,$udom,$unum,$file_name,$group);
         if ($access) {          if ($access) {
             &process_public($r,$requrl,$access);              &process_public($r,$requrl,$access);
             return OK;              return OK;
Line 92  sub process_public { Line 92  sub process_public {
         my $cookie=&Apache::lonauth::success($r,'public','public','public');          my $cookie=&Apache::lonauth::success($r,'public','public','public');
         my $lonidsdir=$r->dir_config('lonIDsDir');          my $lonidsdir=$r->dir_config('lonIDsDir');
         &Apache::lonnet::transfer_profile_to_env($lonidsdir,$cookie);          &Apache::lonnet::transfer_profile_to_env($lonidsdir,$cookie);
  $r->err_header_out('Set-cookie',"lonID=$cookie; path=/");   $r->err_header_out('Set-cookie',"lonID=$cookie; path=/; HttpOnly");
     }      }
     &Apache::lonacc::get_posted_cgi($r);      &Apache::lonacc::get_posted_cgi($r);
     $env{'request.state'} = "published";      $env{'request.state'} = "published";
Line 102  sub process_public { Line 102  sub process_public {
 }  }
   
 sub process_portfolio {  sub process_portfolio {
     my ($udom,$unum,$file_name,$group) = @_;      my ($r,$udom,$unum,$file_name,$group) = @_;
     my $current_perms = &Apache::lonnet::get_portfile_permissions($udom,$unum);      my $current_perms = &Apache::lonnet::get_portfile_permissions($udom,$unum);
     my %access_controls = &Apache::lonnet::get_access_controls($current_perms,$group,$file_name);      my %access_controls = &Apache::lonnet::get_access_controls($current_perms,$group,$file_name);
     my $access = '';      my $access = '';
     my $now = time;      my $now = time;
       my $clientip = &Apache::lonnet::get_requestor_ip($r);
     foreach my $key (keys(%{$access_controls{$file_name}})) {      foreach my $key (keys(%{$access_controls{$file_name}})) {
         my ($num,$scope,$end,$start) = ($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/);          my ($num,$scope,$end,$start) = ($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/);
         if ($start > $now) {          if ($start > $now) {
Line 119  sub process_portfolio { Line 120  sub process_portfolio {
             $access = 'public';              $access = 'public';
             last;              last;
         }          }
           if ($scope eq 'ip') {
               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)) {
                           $access = 'ip';
                           last;
                       }
                   }
               }
           }
         if ($scope eq 'guest') {          if ($scope eq 'guest') {
             $access = 'guest';              $access = 'guest';
         }          }

Removed from v.1.19  
changed lines
  Added in v.1.24.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>