Diff for /loncom/auth/checkauthen.pm between versions 1.6 and 1.17

version 1.6, 2006/08/30 21:35:08 version 1.17, 2014/05/17 22:44:11
Line 1 Line 1
 # The LearningOnline Network  # The LearningOnline Network
 # checks for a cokkie to authenticate a user  # checks for a cookie to authenticate a user
 #  #
 # $Id$  # $Id$
 #  #
Line 36  use Apache::lonnet; Line 36  use Apache::lonnet;
 sub handler {  sub handler {
     my ($r) = @_;      my ($r) = @_;
   
     if ($r->auth_type() eq 'Basic') {      if ($r->uri() =~ m{^/res/adm/pages/[^/]+\.(gif|png)$}) {
           if ($r->user() eq '') {
               $r->user('public:public');
           }
           return OK;
       }
   
       if (&Apache::lonnet::is_domainimage($r->uri)) {
           if ($r->user() eq '') {
               $r->user('public:public');
           }
           return OK;
       }
   
       if ($r->auth_type() ne 'LONCAPA') {
  return DECLINED;   return DECLINED;
     }      }
     my $fail = FORBIDDEN;       my $fail = FORBIDDEN; 
Line 51  sub handler { Line 65  sub handler {
     if ($env{'user.name'} eq 'public'       if ($env{'user.name'} eq 'public' 
  && $env{'user.domain'} eq 'public') {   && $env{'user.domain'} eq 'public') {
  if ($env{'request.publicaccess'} ) {   if ($env{'request.publicaccess'} ) {
               if ($r->user() eq '') {
                   $r->user('public:public');
               }
     return OK;      return OK;
  } else {   } else {
     return $fail;      return $fail;
  }   }
     }      }
   
     my %cookies=CGI::Cookie->parse($r->header_in('Cookie'));      my %user;
     my $lonid=$cookies{'lonID'};      my $handle = &Apache::lonnet::check_for_valid_session($r,undef,\%user);
     my $cookie;      if ($handle eq '') {
     if ($lonid) {          $handle = $env{'user.environment'};
  my $handle=$lonid->value;          if (($handle ne '') && ($r->user() eq '')) {
         $handle=~s/\W//g;              if ($env{'user.domain'} eq $r->dir_config('lonDefDomain')) {
         my $lonidsdir=$r->dir_config('lonIDsDir');                  $r->user($env{'user.name'});
         if ((-e "$lonidsdir/$handle.id") && ($handle ne '')) {                  } else {
     return OK;                  $r->user($env{'user.name'}.':'.$env{'user.domain'});
  }              }
           }
       }
   
       if ($handle ne '') {
           if ($r->user() eq '') {
               if ($user{'domain'} eq $r->dir_config('lonDefDomain')) {
                   $r->user($user{'name'});
               } else {
                   $r->user($user{'name'}.':'.$user{'domain'});
               }
           }
           return OK;
       }
       if (($fail == FORBIDDEN) &&
           (($r->uri eq '/adm/email') || ($r->uri eq '/adm/preferences') ||
            ($r->uri eq '/adm/requestcourse'))) {
           $env{'form.firsturl'} = $r->uri;
     }      }
     return $fail;      return $fail;
 }  }

Removed from v.1.6  
changed lines
  Added in v.1.17


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