--- loncom/auth/lonacc.pm 2007/04/27 22:03:02 1.110 +++ loncom/auth/lonacc.pm 2007/11/06 02:26:07 1.112 @@ -1,7 +1,7 @@ # The LearningOnline Network # Cookie Based Access Handler # -# $Id: lonacc.pm,v 1.110 2007/04/27 22:03:02 banghart Exp $ +# $Id: lonacc.pm,v 1.112 2007/11/06 02:26:07 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,7 +63,7 @@ sub get_posted_cgi { if ($r->header_in('Content-length')) { $r->read($buffer,$r->header_in('Content-length'),0); } - unless ($buffer=~/^(\-+\w+)\s+Content\-Disposition\:\s*form\-data/si) { + unless ($buffer=~/^(\-+[\+\w]+)\s+Content\-Disposition\:\s*form\-data/si) { my @pairs=split(/&/,$buffer); my $pair; foreach $pair (@pairs) { @@ -84,7 +83,7 @@ sub get_posted_cgi { my $fmime=''; my $i; for ($i=0;$i<=$#lines;$i++) { - if ($lines[$i]=~/^$contentsep/) { + if ($lines[$i]=~/^\Q$contentsep\E/) { if ($name) { chomp($value); if ($fname) { @@ -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; } @@ -210,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 } @@ -233,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