--- loncom/auth/checkauthen.pm 2006/11/23 01:49:41 1.10 +++ loncom/auth/checkauthen.pm 2014/01/05 11:30:06 1.15 @@ -1,7 +1,7 @@ # The LearningOnline Network # checks for a cokkie to authenticate a user # -# $Id: checkauthen.pm,v 1.10 2006/11/23 01:49:41 albertel Exp $ +# $Id: checkauthen.pm,v 1.15 2014/01/05 11:30:06 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,6 +36,20 @@ use Apache::lonnet; sub handler { my ($r) = @_; + if ($r->uri() =~ m{^/res/adm/pages/[^/]+\.(gif|png)$}) { + if ($r->user() eq '') { + $r->user('public'); + } + return OK; + } + + if (&Apache::lonnet::is_domainimage($r->uri)) { + if ($r->user() eq '') { + $r->user('public'); + } + return OK; + } + if ($r->auth_type() ne 'LONCAPA') { return DECLINED; } @@ -51,26 +65,43 @@ sub handler { if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { if ($env{'request.publicaccess'} ) { + if ($r->user() eq '') { + $r->user('public'); + } return OK; } else { return $fail; } } - my %cookies=CGI::Cookie->parse($r->header_in('Cookie')); - my $lonid=$cookies{'lonID'}; - my $handle; - if ($lonid) { - $handle=&LONCAPA::clean_handle($lonid->value); - $handle = $r->dir_config('lonIDsDir')."/$handle.id"; - } else { + my %user; + my $handle = &Apache::lonnet::check_for_valid_session($r,undef,\%user); + if ($handle eq '') { $handle = $env{'user.environment'}; + if (($handle ne '') && ($r->user() eq '')) { + if ($env{'user.domain'} eq $r->dir_config('lonDefDomain')) { + $r->user($env{'user.name'}); + } else { + $r->user($env{'user.name'}.':'.$env{'user.domain'}); + } + } } - if (($handle ne '') && (-e $handle)) { + 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; }