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

raeburn raeburn at source.lon-capa.org
Sun Feb 5 22:28:00 EST 2012


raeburn		Mon Feb  6 03:28:00 2012 EDT

  Modified files:              (Branch: loncapaMITrelate_1)
    /loncom/auth	lonauth.pm 
  Log:
  - Customization for MITrelate.
    - Similar changes to rev 1.101.10.1 for GCI_3.
  
  
Index: loncom/auth/lonauth.pm
diff -u loncom/auth/lonauth.pm:1.101.8.9 loncom/auth/lonauth.pm:1.101.8.9.2.1
--- loncom/auth/lonauth.pm:1.101.8.9	Mon Oct 10 21:02:55 2011
+++ loncom/auth/lonauth.pm	Mon Feb  6 03:27:59 2012
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # User Authentication Module
 #
-# $Id: lonauth.pm,v 1.101.8.9 2011/10/10 21:02:55 raeburn Exp $
+# $Id: lonauth.pm,v 1.101.8.9.2.1 2012/02/06 03:27:59 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -343,47 +343,36 @@
         }
     }
     my $clientcancheckhost = 1;
-    my $authhost=Apache::lonnet::authenticate($form{'uname'},$upass,
+    my $uname = $form{'uname'};
+    my $authhost=Apache::lonnet::authenticate($uname,$upass,
                                               $form{'udom'},$defaultauth,
                                               $clientcancheckhost);
     
 # --------------------------------------------------------------------- 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') {
-        if ($defaultauth) {
-            my $domdesc = &Apache::lonnet::domain($form{'udom'},'description');
-            unless (&check_can_host($r,\%form,'no_account_on_host',$domdesc)) {
-                return OK;
-            }
-            my $start_page = 
-                &Apache::loncommon::start_page('Create a user account in LON-CAPA',
-                                               '',{'no_inline_link'   => 1,});
-            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,
-                                                       undef,$statustocreate);
-            &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($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,$contact_name);
+        return OK;
     }
 
     if (($firsturl eq '') || 
@@ -543,6 +532,38 @@
     return $result;
 }
 
+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 (&check_can_host($r,\%form,'no_account_on_host',$domdesc)) {
+        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__
 




More information about the LON-CAPA-cvs mailing list