--- loncom/auth/lonacc.pm 2007/01/31 16:48:54 1.107 +++ loncom/auth/lonacc.pm 2007/10/02 01:09:59 1.111 @@ -1,7 +1,7 @@ # The LearningOnline Network # Cookie Based Access Handler # -# $Id: lonacc.pm,v 1.107 2007/01/31 16:48:54 albertel Exp $ +# $Id: lonacc.pm,v 1.111 2007/10/02 01:09:59 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,7 +37,6 @@ use Apache::loncommon(); use Apache::lonlocal; use Apache::restrictedaccess(); use Apache::blockedaccess(); -use CGI::Cookie(); use Fcntl qw(:flock); use LONCAPA; @@ -145,12 +144,12 @@ sub get_posted_cgi { # returns OK if it was a SSO and user was handled # undef if not SSO or no means to hanle the user sub sso_login { - my ($r,$lonid,$handle) = @_; + my ($r,$handle) = @_; my $lonidsdir=$r->dir_config('lonIDsDir'); if (!($r->user && (!defined($env{'user.name'}) && !defined($env{'user.domain'})) - && (!$lonid || !-e "$lonidsdir/$handle.id" || $handle eq ''))) { + && ($handle eq ''))) { # not an SSO case or already logged in return undef; } @@ -207,17 +206,14 @@ sub sso_login { sub handler { my $r = shift; my $requrl=$r->uri; - my %cookies=CGI::Cookie->parse($r->header_in('Cookie')); - my $lonid=$cookies{'lonID'}; - my $cookie; - my $lonidsdir=$r->dir_config('lonIDsDir'); - - my $handle; - if ($lonid) { - $handle=&LONCAPA::clean_handle($lonid->value); + if (&Apache::lonnet::is_domainimage($requrl)) { + return OK; } - my $result = &sso_login($r,$lonid,$handle); + + my $handle = &Apache::lonnet::check_for_valid_session($r); + + my $result = &sso_login($r,$handle); if (defined($result)) { return $result } @@ -230,10 +226,10 @@ sub handler { if ($handle eq '') { $r->log_reason("Cookie $handle not valid", $r->filename); - } elsif ((-e "$lonidsdir/$handle.id") && ($handle ne '')) { + } elsif ($handle ne '') { # ------------------------------------------------------ Initialize Environment - + my $lonidsdir=$r->dir_config('lonIDsDir'); &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle); # --------------------------------------------------------- Initialize Language @@ -284,6 +280,14 @@ sub handler { $env{'user.domain'}; if ($requrl !~ /^\Q$start\E/) { $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied"; + return HTTP_NOT_ACCEPTABLE; + } + } + if ($requrl =~ m|^/zipspool/|) { + my $start='/zipspool/zipout/'.$env{'user.name'}.":". + $env{'user.domain'}; + if ($requrl !~ /^\Q$start\E/) { + $env{'user.error.msg'}="$requrl:bre:1:1:Access Denied"; return HTTP_NOT_ACCEPTABLE; } }