Diff for /loncom/auth/lonacc.pm between versions 1.127 and 1.136

version 1.127, 2009/07/23 18:45:39 version 1.136, 2011/06/13 02:44:36
Line 156  sub get_posted_cgi { Line 156  sub get_posted_cgi {
  for ($i=0;$i<=$#lines;$i++) {   for ($i=0;$i<=$#lines;$i++) {
     if ($lines[$i]=~/^--\Q$contentsep\E/) {      if ($lines[$i]=~/^--\Q$contentsep\E/) {
  if ($name) {   if ($name) {
     chomp($value);      $value=~s/[\r\n]+$//;
                     if (ref($fields) eq 'ARRAY') {                      if (ref($fields) eq 'ARRAY') {
                         next if (!grep(/^\Q$name\E$/,@{$fields}));                          next if (!grep(/^\Q$name\E$/,@{$fields}));
                     }                      }
Line 290  sub sso_login { Line 290  sub sso_login {
         }          }
     }      }
   
     my $domain = $r->dir_config('lonDefDomain');      my $domain = $r->dir_config('lonSSOUserDomain');
       if ($domain eq '') {
           $domain = $r->dir_config('lonDefDomain');
       }
     my $home=&Apache::lonnet::homeserver($user,$domain);      my $home=&Apache::lonnet::homeserver($user,$domain);
     if ($home !~ /(con_lost|no_host|no_such_host)/) {      if ($home !~ /(con_lost|no_host|no_such_host)/) {
  &Apache::lonnet::logthis(" SSO authorized user $user ");   &Apache::lonnet::logthis(" SSO authorized user $user ");
  if ($r->dir_config("lonBalancer") eq 'yes') {   if ($r->dir_config("lonBalancer") eq 'yes') {
     # login but immeaditly go to switch server to find us a new       # login but immediately go to switch server to find us a new 
     # machine      # machine
     &Apache::lonauth::success($r,$user,$domain,$home,'noredirect');      &Apache::lonauth::success($r,$user,$domain,$home,'noredirect');
             $env{'request.sso.login'} = 1;              $env{'request.sso.login'} = 1;
Line 411  sub handler { Line 414  sub handler {
  }   }
  $env{'request.filename'} = $r->filename;   $env{'request.filename'} = $r->filename;
  $env{'request.noversionuri'} = &Apache::lonnet::deversion($requrl);   $env{'request.noversionuri'} = &Apache::lonnet::deversion($requrl);
           if ($requrl =~ m{^/adm/wrapper/ext/}) {
               my $query = $r->args;
               if ($query) {
                   my $preserved;
                   foreach my $pair (split(/&/,$query)) {
                       my ($name, $value) = split(/=/,$pair);
                       unless ($name eq 'symb') {
                           $preserved .= $pair.'&';
                       }
                   }
                   $preserved =~ s/\&$//;
                   if ($preserved) {
                       $env{'request.external.querystring'} = $preserved;
                   }
               }
           }
 # -------------------------------------------------------- Load POST parameters  # -------------------------------------------------------- Load POST parameters
   
  &Apache::lonacc::get_posted_cgi($r);   &Apache::lonacc::get_posted_cgi($r);
Line 433  sub handler { Line 452  sub handler {
                 return OK;                  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";                  if ($requrl =~ m{^/res/}) {
  return HTTP_NOT_ACCEPTABLE;                       $access = &Apache::lonnet::allowed('bro',$requrl);
                       if ($access ne 'F') {
                           if ($requrl eq '/res/lib/templates/simpleproblem.problem/smpedit') {
                               $access = &Apache::lonnet::allowed('bre','/res/lib/templates/simpleproblem.problem');
                               if ($access ne 'F') {
                                   $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied";
                                   return HTTP_NOT_ACCEPTABLE;
                               }
                           } else {
                               $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied";
                               return HTTP_NOT_ACCEPTABLE;
                           }
                       }
                   } else {
       $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied";
       return HTTP_NOT_ACCEPTABLE;
                   }
     }      }
  }   }
  if ($requrl =~ m|^/prtspool/|) {   if ($requrl =~ m|^/prtspool/|) {
Line 457  sub handler { Line 492  sub handler {
     $env{'user.domain'} eq 'public' &&      $env{'user.domain'} eq 'public' &&
     $requrl !~ m{^/+(res|public|uploaded)/} &&      $requrl !~ m{^/+(res|public|uploaded)/} &&
     $requrl !~ m{^/adm/[^/]+/[^/]+/aboutme/portfolio$ }x &&      $requrl !~ m{^/adm/[^/]+/[^/]+/aboutme/portfolio$ }x &&
           $requrl !~ m{^/adm/blockingstatus/.*$} &&
     $requrl !~ m{^/+adm/(help|logout|restrictedaccess|randomlabel\.png)}) {      $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;
Line 468  sub handler { Line 504  sub handler {
     $requrl=~/\.(\w+)$/;      $requrl=~/\.(\w+)$/;
             my $query=$r->args;              my $query=$r->args;
     if ((&Apache::loncommon::fileembstyle($1) eq 'ssi') ||      if ((&Apache::loncommon::fileembstyle($1) eq 'ssi') ||
  ($requrl=~/^\/adm\/.*\/(aboutme|navmaps|smppg|bulletinboard)(\?|$ )/x) ||   ($requrl=~/^\/adm\/.*\/(aboutme|smppg|bulletinboard)(\?|$ )/x) ||
  ($requrl=~/^\/adm\/wrapper\//) ||   ($requrl=~/^\/adm\/wrapper\//) ||
  ($requrl=~m|^/adm/coursedocs/showdoc/|) ||   ($requrl=~m|^/adm/coursedocs/showdoc/|) ||
  ($requrl=~m|\.problem/smpedit$|) ||   ($requrl=~m|\.problem/smpedit$|) ||
  ($requrl=~/^\/public\/.*\/syllabus$/)) {   ($requrl=~/^\/public\/.*\/syllabus$/) ||
                   ($requrl=~/^\/adm\/(viewclasslist|navmaps)$/) ||
                   ($requrl=~/^\/adm\/.*\/aboutme\/portfolio(\?|$)/)) {
 # ------------------------------------- This is serious stuff, get symb and log  # ------------------------------------- This is serious stuff, get symb and log
  my $symb;   my $symb;
  if ($query) {   if ($query) {
Line 487  sub handler { Line 525  sub handler {
   'last_known' =>[$murl,$mid]);    'last_known' =>[$murl,$mid]);
     } elsif ((&Apache::lonnet::symbverify($symb,$requrl)) ||      } elsif ((&Apache::lonnet::symbverify($symb,$requrl)) ||
      (($requrl=~m|(.*)/smpedit$|) &&       (($requrl=~m|(.*)/smpedit$|) &&
       &Apache::lonnet::symbverify($symb,$1))) {        &Apache::lonnet::symbverify($symb,$1)) ||
                                (($requrl=~m|(.*/aboutme)/portfolio$|) &&
                                 &Apache::lonnet::symbverify($symb,$1))) {
  my ($map,$mid,$murl)=&Apache::lonnet::decode_symb($symb);   my ($map,$mid,$murl)=&Apache::lonnet::decode_symb($symb);
  &Apache::lonnet::symblist($map,$murl => [$murl,$mid],   &Apache::lonnet::symblist($map,$murl => [$murl,$mid],
   'last_known' =>[$murl,$mid]);    'last_known' =>[$murl,$mid]);
Line 499  sub handler { Line 539  sub handler {
  return HTTP_NOT_ACCEPTABLE;    return HTTP_NOT_ACCEPTABLE; 
     }      }
  } else {   } else {
                       if ($requrl=~m{^(/adm/.*/aboutme)/portfolio$}) {
                           $requrl = $1;
                       }
     $symb=&Apache::lonnet::symbread($requrl);      $symb=&Apache::lonnet::symbread($requrl);
     if (&Apache::lonnet::is_on_map($requrl) && $symb &&      if (&Apache::lonnet::is_on_map($requrl) && $symb &&
  !&Apache::lonnet::symbverify($symb,$requrl)) {   !&Apache::lonnet::symbverify($symb,$requrl)) {

Removed from v.1.127  
changed lines
  Added in v.1.136


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