Diff for /loncom/auth/publiccheck.pm between versions 1.4 and 1.5

version 1.4, 2006/06/26 20:23:33 version 1.5, 2006/07/10 03:58:45
Line 61  sub handler { Line 61  sub handler {
         &process_public($r,$requrl);          &process_public($r,$requrl);
         return OK;          return OK;
     } elsif ($requrl =~ m|/+uploaded/([^/]+)/([^/]+)/portfolio(/.+)$|) {      } elsif ($requrl =~ m|/+uploaded/([^/]+)/([^/]+)/portfolio(/.+)$|) {
         if (&process_portfolio($1,$2,$3)) {          my $access = &process_portfolio($1,$2,$3);
             &process_public($r,$requrl);          if ($access) {
               &process_public($r,$requrl,$access);
             return OK;              return OK;
         }           } 
     } elsif ($requrl =~ m|/+uploaded/([^/]+)/([^/]+)/groups/([^/]+)/portfolio/(.+)$|) {      } elsif ($requrl =~ m|/+uploaded/([^/]+)/([^/]+)/groups/([^/]+)/portfolio/(.+)$|) {
         if (&process_portfolio($1,$2,$3.'/'.$4,$3)) {          my $access = &process_portfolio($1,$2,$3.'/'.$4,$3);
             &process_public($r,$requrl);          if ($access) {
               &process_public($r,$requrl,$access);
             return OK;              return OK;
         }          }
     }      } elsif ($requrl eq '/adm/restrictedaccess') {
           &process_public($r,$requrl);
       } 
     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=/");          if ($access eq 'guest') {
               $r->err_headers_out('Set-cookie',"lonID=$cookie; path=/");
           } else {
               $r->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 94  sub process_portfolio { Line 102  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 105  sub process_portfolio { Line 113  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.4  
changed lines
  Added in v.1.5


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