--- loncom/auth/lonauth.pm 2003/05/24 12:43:54 1.51 +++ loncom/auth/lonauth.pm 2003/11/12 16:55:40 1.59 @@ -1,7 +1,7 @@ # The LearningOnline Network # User Authentication Module # -# $Id: lonauth.pm,v 1.51 2003/05/24 12:43:54 www Exp $ +# $Id: lonauth.pm,v 1.59 2003/11/12 16:55:40 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,6 +46,7 @@ use Apache::loncommon(); use Apache::lonnet(); use Apache::lonmenu(); use Fcntl qw(:flock); +use Apache::lonlocal; my %FORM; @@ -107,6 +108,12 @@ sub success { $FORM{'interface'}=$userenv{'interface'}; } $ENV{'environment.remote'}=$userenv{'remote'}; +# --------------- Do not trust query string to be put directly into environment + foreach ('imagesuppress','appletsuppress', + 'embedsuppress','fontenhance','blackwhite', + 'interface','localpath','localres') { + $FORM{$_}=~s/[\n\r\=]//gs; + } # --------------------------------------------------------- Write first profile { @@ -126,6 +133,10 @@ sub success { print $idf "browser.mathml=$clientmathml\n"; print $idf "browser.unicode=$clientunicode\n"; print $idf "browser.os=$clientos\n"; + if ($FORM{'localpath'}) { + print $idf "browser.localpath=$FORM{'localpath'}\n"; + print $idf "browser.localres=$FORM{'localres'}\n"; + } print $idf "request.course.fn=\n"; print $idf "request.course.uri=\n"; print $idf "request.course.sec=\n"; @@ -172,7 +183,7 @@ sub success { my $startupremote=&Apache::lonmenu::startupremote($lowerurl); my $setflags=&Apache::lonmenu::setflags(); my $maincall=&Apache::lonmenu::maincall(); - my $bodytag=&Apache::loncommon::bodytag('Successful Login',undef,' '); + my $bodytag=&Apache::loncommon::bodytag('Successful Login'); # ------------------------------------------------- Output for successful login $r->send_cgi_header(< 'Welcome', + 'mes' => 'Welcome to the LearningOnline Network with CAPA. Please wait while your session is being set up', + 'pro' => 'Problems', + 'log' => 'loginproblems.html', + ); $r->print(< @@ -189,11 +206,9 @@ $startupremote $bodytag $setflags $windowinfo -

Welcome!

-Welcome to the LearningOnline Network with CAPA. -Please wait while your session -is being set up.

-Problems?

+

$lt{'wel'}

+$lt{'mes'}.

+$lt{'pro'}?

$maincall @@ -204,7 +219,7 @@ ENDSUCCESS sub failed { my ($r,$message) = @_; - my $bodytag=&Apache::loncommon::bodytag('Unsuccessful Login',undef,' '); + my $bodytag=&Apache::loncommon::bodytag('Unsuccessful Login'); $r->send_cgi_header(<send_cgi_header(<print(< + +Rerouting Login to the LearningOnline Network with CAPA + + +$bodytag +

Sorry ...

+Please log in again. + + +ENDRFAILED +} + # ---------------------------------------------------------------- Main handler sub handler { my $r = shift; +# Are we re-routing? + if (-e '/home/httpd/html/lon-status/reroute.txt') { + &reroute($r); + return OK; + } + + &Apache::lonlocal::get_language_handle($r); + +# -------------------------------- Prevent users from attempting to login twice + my %cookies=CGI::Cookie->parse($r->header_in('Cookie')); + my $lonid=$cookies{'lonID'}; + my $cookie; + if ($lonid) { + my $handle=$lonid->value; + $handle=~s/\W//g; + my $lonidsdir=$r->dir_config('lonIDsDir'); + if ((-e "$lonidsdir/$handle.id") && ($handle ne '')) { +# Indeed, a valid token is found + $r->send_cgi_header(<print(< + +Already logged in + + +$bodytag +

You are already logged in

+

Please either continue the current session or +logout.

+

+Problems?

+ + +ENDFAILED + return OK; + } + } + +# ---------------------------------------------------- No valid token, continue + + my $buffer; $r->read($buffer,$r->header_in('Content-length'),0); my @pairs=split(/&/,$buffer); @@ -301,7 +384,8 @@ sub handler { return OK; } - if (($firsturl eq '') || ($firsturl eq '/adm/logout')) { + if (($firsturl eq '') || + ($firsturl=~/^\/adm\/(logout|remote)/)) { $firsturl='/adm/roles'; }