Diff for /loncom/auth/lonacc.pm between versions 1.147 and 1.150

version 1.147, 2013/12/05 05:19:14 version 1.150, 2013/12/19 22:50:16
Line 101  use Apache::lonnet; Line 101  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::restrictedaccess();  use Apache::restrictedaccess();
 use Apache::blockedaccess();   use Apache::blockedaccess();
 use Fcntl qw(:flock);  use Fcntl qw(:flock);
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
   
Line 264  sub upload_size_allowed { Line 264  sub upload_size_allowed {
 =item sso_login()  =item sso_login()
   
  handle the case of the single sign on user, at this point $r->user    handle the case of the single sign on user, at this point $r->user 
  will be set and valia;d now need to find the loncapa user info, and possibly   will be set and valid; now need to find the loncapa user info, and possibly
  balance them. If Apache >= 2.4, $r->user() will also have been set so    balance them. If $r->user() is set this means either it was either set by
         $curruser is checked, and if null, this is an SSO case.          SSO or by checkauthen.pm, if a valid cookie was found. The latter case can
  returns OK if it was a SSO and user was handled          be identified by the third arg ($usename), except when lonacc is called in 
         undef if not SSO or no means to hanle the user          an internal redirect to /adm/switchserver (e.g., load-balancing following
           successful authentication) -- no cookie set yet.  For that particular case
           simply skip the call to sso_login(). 
   
    returns OK if it was SSO and user was handled.
           returns undef if not SSO or no means to handle the user.
                   
 =cut  =cut
   
 sub sso_login {  sub sso_login {
     my ($r,$handle,$curruser) = @_;      my ($r,$handle,$username) = @_;
   
     my $lonidsdir=$r->dir_config('lonIDsDir');      my $lonidsdir=$r->dir_config('lonIDsDir');
     if (($r->user eq '') || ($curruser ne '') ||      if (($r->user eq '') || ($username ne '') ||
         (defined($env{'user.name'}) && (defined($env{'user.domain'}))          (defined($env{'user.name'}) && (defined($env{'user.domain'}))
   && ($handle ne ''))) {    && ($handle ne ''))) {
  # not an SSO case or already logged in   # not an SSO case or already logged in
Line 405  sub sso_login { Line 410  sub sso_login {
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
     my $requrl=$r->uri;      my $requrl=$r->uri;
     if (&Apache::lonnet::is_domainimage($requrl)) {  
       if ($requrl =~ m{^/res/adm/pages/[^/]+\.(gif|png)$}) {
         return OK;          return OK;
     }      }
   
     if ($requrl =~ m{^/res/adm/pages/[^/]+\.(gif|png)$}) {      if (&Apache::lonnet::is_domainimage($requrl)) {
         return OK;          return OK;
     }      }
   
     my $curruser;      my %user;
     my $handle = &Apache::lonnet::check_for_valid_session($r,undef,\$curruser);      my $handle = &Apache::lonnet::check_for_valid_session($r,undef,\%user);
   
     my $result = &sso_login($r,$handle,$curruser);      unless (($requrl eq '/adm/switchserver') && (!$r->is_initial_req())) {
     if (defined($result)) {          my $result = &sso_login($r,$handle,$user{'name'});
  return $result;          if (defined($result)) {
       return $result;
           }
     }      }
   
     my ($is_balancer,$otherserver);      my ($is_balancer,$otherserver);
   
     if ($handle eq '') {      if ($handle eq '') {
         unless (($requrl eq '/adm/switchserver') && (!$r->is_initial_req())) {          unless (($requrl eq '/adm/switchserver') && (!$r->is_initial_req())) {
     $r->log_reason("Cookie $handle not valid", $r->filename);      $r->log_reason("Cookie not valid", $r->filename);
         }          }
     } elsif ($handle ne '') {      } elsif ($handle ne '') {
   

Removed from v.1.147  
changed lines
  Added in v.1.150


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