[LON-CAPA-cvs] cvs: loncom(GCI_3) /auth lonauth.pm

raeburn raeburn@source.lon-capa.org
Wed, 15 Sep 2010 18:28:45 -0000


raeburn		Wed Sep 15 18:28:45 2010 EDT

  Modified files:              (Branch: GCI_3)
    /loncom/auth	lonauth.pm 
  Log:
  - Customization for GCI_3.
    Eliminate case sensitivity in usernames except for existing
    users with usernames which include upper case characters.
  
  
Index: loncom/auth/lonauth.pm
diff -u loncom/auth/lonauth.pm:1.101 loncom/auth/lonauth.pm:1.101.10.1
--- loncom/auth/lonauth.pm:1.101	Wed Jul 22 21:51:03 2009
+++ loncom/auth/lonauth.pm	Wed Sep 15 18:28:45 2010
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # User Authentication Module
 #
-# $Id: lonauth.pm,v 1.101 2009/07/22 21:51:03 raeburn Exp $
+# $Id: lonauth.pm,v 1.101.10.1 2010/09/15 18:28:45 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -336,43 +336,35 @@
     if (grep(/^login$/,@cancreate)) {
         $defaultauth = 1;
     }
-    my $authhost=Apache::lonnet::authenticate($form{'uname'},$upass,
+    my $uname = $form{'uname'};
+    my $authhost=Apache::lonnet::authenticate($uname,$upass,
                                               $form{'udom'},$defaultauth);
     
 # --------------------------------------------------------------------- Failed?
 
     if ($authhost eq 'no_host') {
-	&failed($r,'Username and/or password could not be authenticated.',
-		\%form);
-        return OK;
-    } elsif ($authhost eq 'no_account_on_host') {
-        my %domconfig = 
-            &Apache::lonnet::get_dom('configuration',['usercreation'],$form{'udom'});
-        if (grep(/^login$/,@cancreate)) {
-            my $start_page = 
-                &Apache::loncommon::start_page('Create a user account in LON-CAPA',
-                                               '',{'no_inline_link'   => 1,});
-            my $domdesc = &Apache::lonnet::domain($form{'udom'},'description');
-            my $lonhost = $r->dir_config('lonHostID');
-            my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
-            my $contacts = 
-                &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);
-            &Apache::loncommon::content_type($r,'text/html');
-            $r->send_http_header;
-            &Apache::createaccount::print_header($r,$start_page);
-            $r->print('<h3>'.&mt('Account creation').'</h3>'.
-                      &mt('Although your username and password were authenticated, you do not currently have a LON-CAPA account at this institution.').'<br />'.
-                      $output.&Apache::loncommon::end_page());
+        my $lc_uname = lc($form{'uname'});
+        if ($uname eq $lc_uname) {
+            &failed($r,'Username and/or password could not be authenticated.',
+                    \%form);
             return OK;
         } else {
-            &failed($r,'Although your username and password were authenticated, you do not currently have a LON-CAPA account in this domain, and you are not permitted to create one.',\%form);
-            return OK;
+            $authhost=Apache::lonnet::authenticate($lc_uname,$upass,
+                                                   $form{'udom'},$defaultauth);
+            if ($authhost eq 'no_host') {
+                &failed($r,'Username (in lower case) and/or password could not be authenticated.',
+                        \%form);
+                return OK;
+            } elsif ($authhost eq 'no_account_on_host') {
+                &create_account($r,\%form,\@cancreate,$lc_uname,$contact_name);
+                return OK;
+            } else {
+                $form{'uname'} = $lc_uname; 
+            }
         }
+    } elsif ($authhost eq 'no_account_on_host') {
+        &create_account($r,\%form,\@cancreate,$uname);
+        return OK;
     }
 
     if (($firsturl eq '') || 
@@ -413,6 +405,38 @@
     return OK;
 }
 
+sub create_account {
+    my ($r,$form,$cancreate,$uname,$contact_name) = @_;
+    return unless((ref($form) eq 'HASH') && (ref($cancreate) eq 'ARRAY'));
+    my %domconfig =
+        &Apache::lonnet::get_dom('configuration',['usercreation'],$form->{'udom'});
+    if (grep(/^login$/,@{$cancreate})) {
+        my $start_page =
+            &Apache::loncommon::start_page('Create a user account in LON-CAPA',
+                                           '',{'no_inline_link'   => 1,});
+        my $domdesc = &Apache::lonnet::domain($form->{'udom'},'description');
+        my $lonhost = $r->dir_config('lonHostID');
+        my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
+        my $contacts =
+            &Apache::loncommon::build_recipient_list(undef,'helpdeskmail',
+                                                    $form->{'udom'},$origmail);
+        my ($contact_email) = split(',',$contacts);
+        my $output = 
+            &Apache::createaccount::username_check($uname,$form->{'udom'},
+                                                   $domdesc,'',$lonhost,
+                                                   $contact_email,$contact_name);
+        &Apache::loncommon::content_type($r,'text/html');
+        $r->send_http_header;
+        &Apache::createaccount::print_header($r,$start_page);
+        $r->print('<h3>'.&mt('Account creation').'</h3>'.
+                  &mt('Although your username and password were authenticated, you do not currently have a LON-CAPA account at this institution.').'<br />'.
+                  $output.&Apache::loncommon::end_page());
+    } else {
+        &failed($r,'Although your username and password were authenticated, you do not currently have a LON-CAPA account in this domain, and you are not permitted to create one.',$form);
+    }
+    return;
+}
+
 1;
 __END__