Diff for /loncom/auth/publiccheck.pm between versions 1.3 and 1.9

version 1.3, 2006/06/16 22:37:29 version 1.9, 2006/07/21 19:42:12
Line 40  use Apache::lonacc(); Line 40  use Apache::lonacc();
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
   
     my $requrl=$r->uri;      my $requrl=$r->uri;
     my %cookies=CGI::Cookie->parse($r->header_in('Cookie'));      my %cookies=CGI::Cookie->parse($r->header_in('Cookie'));
     my $lonid=$cookies{'lonID'};      my $lonid=$cookies{'lonID'};
Line 56  sub handler { Line 57  sub handler {
  }   }
     }      }
     if ($requrl=~m|^/public/|      if ($requrl=~m|^/public/|
    || $requrl=~m|^/adm/help/.*\.hlp$|
  || (&Apache::lonnet::metadata($requrl,'copyright') eq 'public')) {   || (&Apache::lonnet::metadata($requrl,'copyright') eq 'public')) {
         &process_public($r,$requrl);          &process_public($r,$requrl);
         return OK;          return OK;
     } elsif ($requrl =~ m#/+uploaded/([^/]+)/([^/]+)/portfolio(/.+)$#) {      } elsif (&Apache::lonnet::is_portfolio_url($requrl)) {
         if (&process_portfolio($1,$2,$3)) {   my (undef,$udom,$unum,$file_name,$group) = 
             &process_public($r,$requrl);      &Apache::lonnet::parse_portfolio_url($requrl);
           my $access = &process_portfolio($udom,$unum,$file_name,$group);
           if ($access) {
               &process_public($r,$requrl,$access);
             return OK;              return OK;
         }           } 
     } elsif ($requrl =~ m#/+uploaded/([^/]+)/([^/]+)/groups/([^/]+)/portfolio/(.+)$#) {      } elsif ($requrl eq '/adm/restrictedaccess') {
         if (&process_portfolio($1,$2,$3.'/'.$4,$3)) {          &process_public($r,$requrl);
             &process_public($r,$requrl);   return OK;
             return OK;      } 
         }  
     }  
     return DECLINED;      return DECLINED;
 }  }
   
 sub process_public {  sub process_public {
     my ($r,$requrl) = @_;      my ($r,$requrl,$access) = @_;
     &Apache::lonnet::logthis('Granting public access: '.$requrl);      &Apache::lonnet::logthis('Granting public access: '.$requrl);
     if ($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public') {      if ($env{'user.name'} ne 'public' && $env{'user.domain'} ne '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->header_out('Set-cookie',"lonID=$cookie; path=/");   $r->err_header_out('Set-cookie',"lonID=$cookie; path=/");
     }      }
     &Apache::lonacc::get_posted_cgi($r);      &Apache::lonacc::get_posted_cgi($r);
     $env{'request.state'} = "published";      $env{'request.state'} = "published";
Line 93  sub process_portfolio { Line 96  sub process_portfolio {
     my ($udom,$unum,$file_name,$group) = @_;      my ($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 $public_access = 0;      my $access = '';
     my $now = time;      my $now = time;
     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*)$/);
Line 104  sub process_portfolio { Line 107  sub process_portfolio {
             next;              next;
         }          }
         if ($scope eq 'public') {          if ($scope eq 'public') {
             $public_access = 1;              $access = 'public';
             last;              last;
         }          }
           if ($scope eq 'guest') {
               $access = 'guest';
           }
     }      }
     return $public_access;      return $access;
 }  }
   
 1;  1;

Removed from v.1.3  
changed lines
  Added in v.1.9


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