--- loncom/auth/lonauth.pm 2011/06/12 14:18:09 1.115 +++ loncom/auth/lonauth.pm 2011/11/07 18:15:07 1.120 @@ -1,7 +1,7 @@ # The LearningOnline Network # User Authentication Module # -# $Id: lonauth.pm,v 1.115 2011/06/12 14:18:09 raeburn Exp $ +# $Id: lonauth.pm,v 1.120 2011/11/07 18:15:07 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -40,7 +40,7 @@ use Apache::lonmenu(); use Apache::createaccount; use Fcntl qw(:flock); use Apache::lonlocal; -use Apache::File (); +use Apache::File(); use HTML::Entities; # ------------------------------------------------------------ Successful login @@ -195,9 +195,10 @@ sub reroute { sub handler { my $r = shift; + my $londocroot = $r->dir_config('lonDocRoot'); my $form; # Are we re-routing? - if (-e '/home/httpd/html/lon-status/reroute.txt') { + if (-e "$londocroot/lon-status/reroute.txt") { &reroute($r); return OK; } @@ -329,21 +330,15 @@ sub handler { } # ---------------------------------------------------------------- Authenticate - my @cancreate; + my %domconfig = &Apache::lonnet::get_dom('configuration',['usercreation'],$form{'udom'}); - if (ref($domconfig{'usercreation'}) eq 'HASH') { - if (ref($domconfig{'usercreation'}{'cancreate'}) eq 'HASH') { - if (ref($domconfig{'usercreation'}{'cancreate'}{'selfcreate'}) eq 'ARRAY') { - @cancreate = @{$domconfig{'usercreation'}{'cancreate'}{'selfcreate'}}; - } elsif (($domconfig{'usercreation'}{'cancreate'}{'selfcreate'} ne 'none') && - ($domconfig{'usercreation'}{'cancreate'}{'selfcreate'} ne '')) { - @cancreate = ($domconfig{'usercreation'}{'cancreate'}{'selfcreate'}); - } - } - } + my ($cancreate,$statustocreate) = + &Apache::createaccount::get_creation_controls($form{'udom'},$domconfig{'usercreation'}); my $defaultauth; - if (grep(/^login$/,@cancreate)) { - $defaultauth = 1; + if (ref($cancreate) eq 'ARRAY') { + if (grep(/^login$/,@{$cancreate})) { + $defaultauth = 1; + } } my $clientcancheckhost = 1; my $authhost=Apache::lonnet::authenticate($form{'uname'},$upass, @@ -357,9 +352,7 @@ sub handler { \%form); return OK; } elsif ($authhost eq 'no_account_on_host') { - my %domconfig = - &Apache::lonnet::get_dom('configuration',['usercreation'],$form{'udom'}); - if (grep(/^login$/,@cancreate)) { + if ($defaultauth) { my $domdesc = &Apache::lonnet::domain($form{'udom'},'description'); unless (&check_can_host($r,\%form,'no_account_on_host',$domdesc)) { return OK; @@ -372,9 +365,11 @@ sub handler { &Apache::loncommon::build_recipient_list(undef,'helpdeskmail', $form{'udom'},$origmail); my ($contact_email) = split(',',$contacts); - my $output = &Apache::createaccount::username_check($form{'uname'}, - $form{'udom'},$domdesc,'', - $lonhost,$contact_email,$contact_name); + my $output = + &Apache::createaccount::username_check($form{'uname'},$form{'udom'}, + $domdesc,'',$lonhost, + $contact_email,$contact_name, + undef,$statustocreate); &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; &Apache::createaccount::print_header($r,$start_page); @@ -415,10 +410,12 @@ sub handler { } } - if ($r->dir_config("lonBalancer") eq 'yes') { - my $otherserver = &Apache::lonnet::spareserver(30000,undef,1,$form{'udom'}); + my ($is_balancer,$otherserver) = + &Apache::lonnet::check_loadbalancing($form{'uname'},$form{'udom'}); + + if ($is_balancer) { if (!$otherserver) { - $otherserver = &Apache::lonnet::choose_server($form{'udom'}); + ($otherserver) = &Apache::lonnet::choose_server($form{'udom'}); } if ($otherserver) { &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',undef, @@ -430,7 +427,7 @@ sub handler { return OK; } else { if (!&check_can_host($r,\%form,$authhost)) { - my $otherserver = &Apache::lonnet::choose_server($form{'udom'}); + my ($otherserver) = &Apache::lonnet::choose_server($form{'udom'}); if ($otherserver) { &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',undef, \%form); @@ -458,7 +455,7 @@ sub handler { if ((($userloadpercent>100.0)||($loadpercent>100.0))) { my $unloaded=Apache::lonnet::spareserver($loadpercent,$userloadpercent,1,$form{'udom'}); if (!$unloaded) { - $unloaded = &Apache::lonnet::choose_server($form{'udom'}); + ($unloaded) = &Apache::lonnet::choose_server($form{'udom'}); } if ($unloaded) { &success($r,$form{'uname'},$form{'udom'},$authhost,'noredirect',