--- loncom/auth/lonacc.pm 2007/11/06 18:07:35 1.110.2.1 +++ 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.110.2.1 2007/11/06 18:07:35 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; @@ -64,8 +63,7 @@ sub get_posted_cgi { if ($r->header_in('Content-length')) { $r->read($buffer,$r->header_in('Content-length'),0); } - my $content_type = $r->header_in('Content-type'); - if ($content_type !~ m{^multipart/form-data}) { + unless ($buffer=~/^(\-+\w+)\s+Content\-Disposition\:\s*form\-data/si) { my @pairs=split(/&/,$buffer); my $pair; foreach $pair (@pairs) { @@ -77,7 +75,7 @@ sub get_posted_cgi { &Apache::loncommon::add_to_env("form.$name",$value); } } else { - my ($contentsep) = ($content_type =~ /boundary=\"?([^\";,]+)\"?/); + my $contentsep=$1; my @lines = split (/\n/,$buffer); my $name=''; my $value=''; @@ -85,7 +83,7 @@ sub get_posted_cgi { my $fmime=''; my $i; for ($i=0;$i<=$#lines;$i++) { - if ($lines[$i]=~/^--\Q$contentsep\E/) { + if ($lines[$i]=~/^$contentsep/) { if ($name) { chomp($value); if ($fname) { @@ -146,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; } @@ -211,17 +209,11 @@ sub handler { if (&Apache::lonnet::is_domainimage($requrl)) { return OK; } - 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); - } + + my $handle = &Apache::lonnet::check_for_valid_session($r); - my $result = &sso_login($r,$lonid,$handle); + my $result = &sso_login($r,$handle); if (defined($result)) { return $result } @@ -234,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