Annotation of loncom/auth/lonauth.pm, revision 1.1
1.1 ! albertel 1: # The LearningOnline Network
! 2: # User Authentication Module
! 3: # 5/21/99,5/22,5/25,5/26,5/27,5/29,6/2,6/11,6/14,6/15 Gerd Kortemeyer
! 4:
! 5: package Apache::lonauth;
! 6:
! 7: use Apache::Constants qw(:common);
! 8: use Apache::File;
! 9: use CGI qw(:standard);
! 10: use CGI::Cookie();
! 11: use Apache::lonnet();
! 12:
! 13: # ------------------------------------------------------------ Successful login
! 14:
! 15: sub success {
! 16: my ($r, $lowerurl, $username, $domain, $authhost) = @_;
! 17: my $lonids=$r->dir_config('lonIDsDir');
! 18: # See if old ID present, but overlooked
! 19: my $cookie;
! 20: if ($cookie=<$lonids/$username\_*\_$domain\_$authhost.id>) {
! 21: $cookie=~s/\.id//;
! 22: $cookie=~s/$lonids\///;
! 23: } else {
! 24: my $now=time;
! 25: $cookie="$username\_$now\_$domain\_$authhost";
! 26: {
! 27: my $idf=Apache::File->new(">$lonids/$cookie.id");
! 28: print $idf "Name: $username\n";
! 29: }
! 30: }
! 31: $cookie="lonID=$cookie; path=/";
! 32: $r->send_cgi_header(<<ENDHEADER);
! 33: Content-type: text/html
! 34: Set-cookie: $cookie
! 35:
! 36: ENDHEADER
! 37: $r->print(<<ENDSUCCESS);
! 38: <html>
! 39: <head>
! 40: <title>Successful Login to the LearningOnline Network</title>
! 41: </head>
! 42: <frameset rows="80,*" border=0>
! 43: <frame scrolling="no" name="loncontrol" src="/adm/menu">
! 44: <frame name="loncontent" src="$lowerurl">
! 45: </frameset>
! 46: </html>
! 47: ENDSUCCESS
! 48: }
! 49:
! 50: # --------------------------------------------------------------- Failed login!
! 51:
! 52: sub failed {
! 53: my ($r,$message) = @_;
! 54: $r->send_cgi_header(<<ENDFHEADER);
! 55: Content-type: text/html
! 56:
! 57: ENDFHEADER
! 58: $r->print(<<ENDFAILED);
! 59: <html>
! 60: <head>
! 61: <title>Unsuccessful Login to the LearningOnline Network</title>
! 62: </head>
! 63: <html>
! 64: <body bgcolor="#FFFFFF">
! 65: <h1>Sorry ...</h1>
! 66: <h2>$message to use the Learning<i>Online</i> Network</h2>
! 67: </body>
! 68: </html>
! 69: ENDFAILED
! 70: }
! 71:
! 72: # ---------------------------------------------------------------- Main handler
! 73:
! 74: sub handler {
! 75: my $r = shift;
! 76:
! 77: my $buffer;
! 78: $r->read($buffer,$r->header_in('Content-length'));
! 79: my @pairs=split(/&/,$buffer);
! 80: my $pair; my $name; my $value; my %FORM;
! 81: foreach $pair (@pairs) {
! 82: ($name,$value) = split(/=/,$pair);
! 83: $FORM{$name}=$value;
! 84: }
! 85:
! 86: if ((!$FORM{'uname'}) || (!$FORM{'upass'}) || (!$FORM{'udom'})) {
! 87: failed($r,'Username, password and domain need to be specified');
! 88: return OK;
! 89: }
! 90: $FORM{'uname'} =~ s/\W//g;
! 91: $FORM{'upass'} =~ s/\W//g;
! 92: $FORM{'udom'} =~ s/\W//g;
! 93:
! 94: my $role = $r->dir_config('lonRole');
! 95: my $domain = $r->dir_config('lonDefDomain');
! 96: my $prodir = $r->dir_config('lonUsersDir');
! 97:
! 98: # ---------------------------------------------------------------- Authenticate
! 99: my $authhost=Apache::lonnet::authenticate($FORM{'uname'},
! 100: $FORM{'upass'},
! 101: $FORM{'udom'});
! 102:
! 103: # --------------------------------------------------------------------- Failed?
! 104:
! 105: if ($authhost eq 'no_host') {
! 106: failed($r,'Username and/or password could not be authenticated');
! 107: return OK;
! 108: }
! 109:
! 110: my %cookies=CGI::Cookie->parse($r->header_in('Cookie'));
! 111: my $lonurl=$cookies{'lonURL'};
! 112: if (!$lonurl) { failed($r,'Cookies need to be activated'); return OK; }
! 113: my $lowerurl=$lonurl->value;
! 114:
! 115: success($r,$lowerurl,$FORM{'uname'},$FORM{'udom'},$authhost);
! 116: return OK;
! 117: }
! 118:
! 119: 1;
! 120: __END__
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>