--- loncom/auth/publiccheck.pm 2006/06/26 20:23:33 1.4 +++ loncom/auth/publiccheck.pm 2006/07/10 03:58:45 1.5 @@ -1,7 +1,7 @@ # The LearningOnline Network # Cookie Based Access Handler # -# $Id: publiccheck.pm,v 1.4 2006/06/26 20:23:33 albertel Exp $ +# $Id: publiccheck.pm,v 1.5 2006/07/10 03:58:45 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -61,27 +61,35 @@ sub handler { &process_public($r,$requrl); return OK; } elsif ($requrl =~ m|/+uploaded/([^/]+)/([^/]+)/portfolio(/.+)$|) { - if (&process_portfolio($1,$2,$3)) { - &process_public($r,$requrl); + my $access = &process_portfolio($1,$2,$3); + if ($access) { + &process_public($r,$requrl,$access); return OK; } } elsif ($requrl =~ m|/+uploaded/([^/]+)/([^/]+)/groups/([^/]+)/portfolio/(.+)$|) { - if (&process_portfolio($1,$2,$3.'/'.$4,$3)) { - &process_public($r,$requrl); + my $access = &process_portfolio($1,$2,$3.'/'.$4,$3); + if ($access) { + &process_public($r,$requrl,$access); return OK; } - } + } elsif ($requrl eq '/adm/restrictedaccess') { + &process_public($r,$requrl); + } return DECLINED; } sub process_public { - my ($r,$requrl) = @_; + my ($r,$requrl,$access) = @_; &Apache::lonnet::logthis('Granting public access: '.$requrl); if ($env{'user.name'} ne 'public' && $env{'user.domain'} ne '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->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); $env{'request.state'} = "published"; @@ -94,7 +102,7 @@ sub process_portfolio { my ($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); - my $public_access = 0; + my $access = ''; my $now = time; foreach my $key (keys(%{$access_controls{$file_name}})) { my ($num,$scope,$end,$start) = ($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/); @@ -105,11 +113,14 @@ sub process_portfolio { next; } if ($scope eq 'public') { - $public_access = 1; + $access = 'public'; last; } + if ($scope eq 'guest') { + $access = 'guest'; + } } - return $public_access; + return $access; } 1;