![]() ![]() | ![]() |
Get the sense of the auth_type check right.
1: # The LearningOnline Network 2: # checks for a cokkie to authenticate a user 3: # 4: # $Id: checkauthen.pm,v 1.4 2006/06/05 10:03:11 foxr Exp $ 5: # 6: # Copyright Michigan State University Board of Trustees 7: # 8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA). 9: # 10: # LON-CAPA is free software; you can redistribute it and/or modify 11: # it under the terms of the GNU General Public License as published by 12: # the Free Software Foundation; either version 2 of the License, or 13: # (at your option) any later version. 14: # 15: # LON-CAPA is distributed in the hope that it will be useful, 16: # but WITHOUT ANY WARRANTY; without even the implied warranty of 17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18: # GNU General Public License for more details. 19: # 20: # You should have received a copy of the GNU General Public License 21: # along with LON-CAPA; if not, write to the Free Software 22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23: # 24: # /home/httpd/html/adm/gpl.txt 25: # 26: # http://www.lon-capa.org/ 27: # 28: ### 29: 30: package Apache::checkauthen; 31: 32: use strict; 33: use Apache::Constants qw(:common); 34: use Apache::lonnet; 35: 36: sub handler { 37: my ($r) = @_; 38: 39: if ($r->auth_type() ne 'Basic') { 40: return DECLINED; 41: } 42: my $fail = FORBIDDEN; 43: if ($r->dir_config('lonOtherAuthen') eq 'yes') { 44: #&Apache::lonnet::logthis("other authen"); 45: $fail = DECLINED; 46: } 47: 48: if ($env{'user.name'} eq 'public' 49: && $env{'user.domain'} eq 'public') { 50: if ($env{'request.publicaccess'} ) { 51: return OK; 52: } else { 53: return $fail; 54: } 55: } 56: 57: my %cookies=CGI::Cookie->parse($r->header_in('Cookie')); 58: my $lonid=$cookies{'lonID'}; 59: my $cookie; 60: if ($lonid) { 61: my $handle=$lonid->value; 62: $handle=~s/\W//g; 63: my $lonidsdir=$r->dir_config('lonIDsDir'); 64: if ((-e "$lonidsdir/$handle.id") && ($handle ne '')) { 65: return OK; 66: } 67: } 68: 69: return $fail; 70: } 71: 72: 1;