Diff for /loncom/auth/lonacc.pm between versions 1.76 and 1.91

version 1.76, 2006/04/13 19:07:33 version 1.91, 2006/08/04 21:31:53
Line 35  use Apache::File; Line 35  use Apache::File;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::restrictedaccess();
 use CGI::Cookie();  use CGI::Cookie();
 use Fcntl qw(:flock);  use Fcntl qw(:flock);
   use LONCAPA;
   
 sub cleanup {  sub cleanup {
     my ($r)=@_;      my ($r)=@_;
Line 69  sub get_posted_cgi { Line 71  sub get_posted_cgi {
     $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
     $name  =~ tr/+/ /;      $name  =~ tr/+/ /;
     $name  =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;      $name  =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
     &add_to_env("form.$name",$value);      &Apache::loncommon::add_to_env("form.$name",$value);
  }   }
     } else {      } else {
  my $contentsep=$1;   my $contentsep=$1;
Line 89  sub get_posted_cgi { Line 91  sub get_posted_cgi {
     } else {      } else {
  $value=~s/\s+$//s;   $value=~s/\s+$//s;
     }      }
     &add_to_env("form.$name",$value);      &Apache::loncommon::add_to_env("form.$name",$value);
  }   }
  if ($i<$#lines) {   if ($i<$#lines) {
     $i++;      $i++;
Line 135  sub get_posted_cgi { Line 137  sub get_posted_cgi {
     $r->headers_in->unset('Content-length');      $r->headers_in->unset('Content-length');
 }  }
   
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
     my $requrl=$r->uri;      my $requrl=$r->uri;
Line 150  sub handler { Line 151  sub handler {
         $handle=~s/\W//g;          $handle=~s/\W//g;
     }      }
               
       my ($sso_login);
     if ($r->user       if ($r->user 
  && (!$lonid || !-e "$lonidsdir/$handle.id" || $handle eq '') ) {   && (!$lonid || !-e "$lonidsdir/$handle.id" || $handle eq '') ) {
    $sso_login = 1;
  my $domain = $r->dir_config('lonDefDomain');   my $domain = $r->dir_config('lonDefDomain');
  my $home=&Apache::lonnet::homeserver($r->user,$domain);   my $home=&Apache::lonnet::homeserver($r->user,$domain);
  if ($home !~ /(con_lost|no_such_host)/) {   if ($home !~ /(con_lost|no_such_host)/) {
Line 161  sub handler { Line 164  sub handler {
  }   }
     }      }
   
       if ($sso_login) {
    &Apache::lonnet::appenv('request.sso.login' => 1);
       }
   
     if ($r->dir_config("lonBalancer") eq 'yes') {      if ($r->dir_config("lonBalancer") eq 'yes') {
  $r->set_handlers('PerlResponseHandler'=>   $r->set_handlers('PerlResponseHandler'=>
  [\&Apache::switchserver::handler]);   [\&Apache::switchserver::handler]);
Line 191  sub handler { Line 198  sub handler {
     &Apache::lonacc::get_posted_cgi($r);      &Apache::lonacc::get_posted_cgi($r);
   
 # ---------------------------------------------------------------- Check access  # ---------------------------------------------------------------- Check access
               my $now = time;
             if ($requrl!~/^\/adm|public|prtspool\//) {              if ($requrl!~/^\/adm|public|prtspool\//) {
  my $access=&Apache::lonnet::allowed('bre',$requrl);   my $access=&Apache::lonnet::allowed('bre',$requrl);
                 if ($access eq '1') {                  if ($access eq '1') {
    $env{'user.error.msg'}="$requrl:bre:0:0:Choose Course";     $env{'user.error.msg'}="$requrl:bre:0:0:Choose Course";
            return HTTP_NOT_ACCEPTABLE;              return HTTP_NOT_ACCEPTABLE; 
                 }                  }
    if ($access eq 'A') {
       &Apache::restrictedaccess::setup_handler($r);
       return OK;
                   }
                 if (($access ne '2') && ($access ne 'F')) {                  if (($access ne '2') && ($access ne 'F')) {
    $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied";     $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied";
            return HTTP_NOT_ACCEPTABLE;              return HTTP_NOT_ACCEPTABLE; 
Line 213  sub handler { Line 224  sub handler {
     }      }
     if ($env{'user.name'} eq 'public' &&       if ($env{'user.name'} eq 'public' && 
  $env{'user.domain'} eq 'public' &&   $env{'user.domain'} eq 'public' &&
  $requrl !~ m{^/+(res|public)/} &&   $requrl !~ m{^/+(res|public|uploaded)/} &&
  $requrl !~ m{^/+adm/(help|logout|randomlabel\.png)}) {   $requrl !~ m{^/adm/[^/]+/[^/]+/aboutme/portfolio$} &&
    $requrl !~ m{^/+adm/(help|logout|restrictedaccess|randomlabel\.png)}) {
  $env{'request.querystring'}=$r->args;   $env{'request.querystring'}=$r->args;
  $env{'request.firsturl'}=$requrl;   $env{'request.firsturl'}=$requrl;
  return FORBIDDEN;   return FORBIDDEN;
Line 282  sub handler { Line 294  sub handler {
         } else {           } else { 
             $r->log_reason("Cookie $handle not valid", $r->filename);               $r->log_reason("Cookie $handle not valid", $r->filename); 
         }          }
     }   }
   
 # -------------------------------------------- See if this is a public resource  # -------------------------------------------- See if this is a public resource
     if ($requrl=~m|^/public/|      if ($requrl=~m|^/public/|
Line 302  sub handler { Line 314  sub handler {
         return OK;          return OK;
     }      }
     if ($requrl=~m|^/+adm/+help/+|) {      if ($requrl=~m|^/+adm/+help/+|) {
  return OK;    return OK;
     }      }
   # ------------------------------------ See if this is a viewable portfolio file
       if (&Apache::lonnet::is_portfolio_url($requrl)) {
    my $access=&Apache::lonnet::allowed('bre',$requrl);
    if ($access eq 'A') {
       &Apache::restrictedaccess::setup_handler($r);
       return OK;
    }
    if (($access ne '2') && ($access ne 'F')) {
       $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied";
       return HTTP_NOT_ACCEPTABLE;
    }
       }
   
 # -------------------------------------------------------------- Not authorized  # -------------------------------------------------------------- Not authorized
     $requrl=~/\.(\w+)$/;      $requrl=~/\.(\w+)$/;
 #    if ((&Apache::loncommon::fileembstyle($1) eq 'ssi') ||  #    if ((&Apache::loncommon::fileembstyle($1) eq 'ssi') ||

Removed from v.1.76  
changed lines
  Added in v.1.91


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