[LON-CAPA-cvs] cvs: loncom(GCI_3) /interface createaccount.pm

raeburn raeburn@source.lon-capa.org
Sun, 06 Dec 2009 23:48:35 -0000


This is a MIME encoded message

--raeburn1260143315
Content-Type: text/plain

raeburn		Sun Dec  6 23:48:35 2009 EDT

  Modified files:              (Branch: GCI_3)
    /loncom/interface	createaccount.pm 
  Log:
  - Customization for GCI_3
    - Equivalent to changes between 1.32 and 1.32.2.1
    - Wording changes to use GCI WebCenter
    - Use Captcha::reCAPTCHA in place of Authen::Captcha
  
  
--raeburn1260143315
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20091206234835.txt"

Index: loncom/interface/createaccount.pm
diff -u loncom/interface/createaccount.pm:1.37 loncom/interface/createaccount.pm:1.37.2.1
--- loncom/interface/createaccount.pm:1.37	Fri Oct 23 16:14:43 2009
+++ loncom/interface/createaccount.pm	Sun Dec  6 23:48:34 2009
@@ -3,7 +3,7 @@
 # institutional log-in ID (institutional authentication required - localauth
 #  or kerberos) or an e-mail address.
 #
-# $Id: createaccount.pm,v 1.37 2009/10/23 16:14:43 bisitz Exp $
+# $Id: createaccount.pm,v 1.37.2.1 2009/12/06 23:48:34 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -39,7 +39,7 @@
 use Apache::lonlocal;
 use Apache::lonauth;
 use Apache::resetpw;
-use Authen::Captcha;
+use Captcha::reCAPTCHA;
 use DynaLoader; # for Crypt::DES version
 use Crypt::DES;
 use LONCAPA qw(:DEFAULT :match);
@@ -147,7 +147,7 @@
         &print_header($r,$start_page,$courseid);
         my $output = '<h3>'.&mt('Account creation unavailable').'</h3>'.
                      '<span class="LC_warning">'.
-                     &mt('Creation of a new user account using an e-mail address or an institutional log-in ID as username is not permitted at this institution ([_1]).',$domdesc).'</span><br /><br />';
+                     &mt('Creation of a new user account using an e-mail address or an institutional log-in ID as username is not permitted for the GCI WebCenter.').'</span><br /><br />';
         $r->print($output);
         &print_footer($r);
         return OK;
@@ -403,7 +403,7 @@
         }
         if (grep(/^email$/,@{$cancreate})) {
             $output .= '<div class="LC_left_float"><h3>'.&mt('Create account with an e-mail address as your username').'</h3>';
-            my $captchaform = &create_captcha();
+            my $captchaform = &create_recaptcha();
             if ($captchaform) {
                 my $submit_text = &mt('Request LON-CAPA account');
                 my $emailform = '<input type="text" name="useremail" size="25" value="" />';
@@ -467,6 +467,7 @@
     my $unameform = '<input type="text" name="uname" size="20" value="" />';
     my $upassform = '<input type="password" name="upass'.$now.'" size="20" />';
     $output .= '<form name="client" method="post" onsubmit="return(send());">'."\n".
+               '<input type="hidden" name="udom" value="'.$domain.'" />'.
                &Apache::lonhtmlcommon::start_pick_box()."\n".
                &Apache::lonhtmlcommon::row_title($titles{$context},
                                                  'LC_pick_box_title')."\n".
@@ -475,16 +476,6 @@
                &Apache::lonhtmlcommon::row_title(&mt('Password'),
                                                 'LC_pick_box_title')."\n".
                $upassform;
-    if ($context eq 'selfenroll') {
-        my $udomform = '<input type="text" name="udom" size="10" value="'.
-                        $domain.'" />';
-        $output .= &Apache::lonhtmlcommon::row_closure(1)."\n".
-                   &Apache::lonhtmlcommon::row_title(&mt('Domain'),
-                                                     'LC_pick_box_title')."\n".
-                   $udomform."\n";
-    } else {
-        $output .= '<input type="hidden" name="udom" value="'.$domain.'" />';
-    }
     $output .= &Apache::lonhtmlcommon::row_closure(1).
                &Apache::lonhtmlcommon::row_title().
                '<br /><input type="submit" name="username_validation" value="'.
@@ -524,23 +515,18 @@
                                          $contact_name,$contact_email);
                 return $output;
             } else {
-                my $code = $env{'form.code'};
-                my $md5sum = $env{'form.crypt'};
-                my %captcha_params = &captcha_settings();
-                my $captcha = Authen::Captcha->new(
-                                  output_folder => $captcha_params{'output_dir'},
-                                  data_folder   => $captcha_params{'db_dir'},
-                                 );
-                my $captcha_chk = $captcha->check_code($code,$md5sum);
-                my %captcha_hash = (
-                                  0       => 'Code not checked (file error)',
-                                  -1      => 'Failed: code expired',
-                                  -2      => 'Failed: invalid code (not in database)',
-                                  -3      => 'Failed: invalid code (code does not match crypt)',
-                                   );
-                if ($captcha_chk != 1) {
+                 my $captcha = Captcha::reCAPTCHA->new;
+                 my $captcha_result =
+                     $captcha->check_answer(
+                                            'PRIVATEKEY',
+                                            $ENV{'REMOTE_ADDR'},
+                                            $env{'form.recaptcha_challenge_field'},
+                                            $env{'form.recaptcha_response_field'},
+                                           );
+                if (!$captcha_result->{is_valid}) {
                     $output = &invalid_state('captcha',$domdesc,$contact_name,
-                                             $contact_email,$captcha_hash{$captcha_chk});
+                                             $contact_email);
+
                     return $output;
                 }
                 my $uhome=&Apache::lonnet::homeserver($useremail,$domain);
@@ -603,7 +589,7 @@
     if ($token !~ /^error/ && $token ne 'no_such_host') {
         my $esc_token = &escape($token);
         my $showtime = localtime(time);
-        my $mailmsg = &mt('A request was submitted on [_1] for creation of a LON-CAPA account at the following institution: [_2].',$showtime,$domdesc).' '.
+        my $mailmsg = &mt('A request was submitted on [_1] for creation of a GCI WebCenter account.',$showtime).' '.
              &mt('To complete this process please open a web browser and enter the following URL in the address/location box: [_1]',
                  &Apache::lonnet::absolute_url().'/adm/createaccount?token='.$esc_token);
         my $result = &Apache::resetpw::send_mail($domdesc,$email,$mailmsg,$contact_name,
@@ -645,7 +631,7 @@
                 if ($result eq 'ok') {
                     $msg = $output; 
                     my $shownow = &Apache::lonlocal::locallocaltime($now);
-                    my $mailmsg = &mt('A LON-CAPA account for the institution: [_1] has been created [_2] from IP address: [_3].  If you did not perform this action or authorize it, please contact the [_4] ([_5]).',$domdesc,$shownow,$ENV{'REMOTE_ADDR'},$contact_name,$contact_email)."\n";
+                    my $mailmsg = &mt('A GCI WebCenter account has been created [_1] from IP address: [_2].  If you did not perform this action or authorize it, please contact the [_3] ([_4]).',$shownow,$ENV{'REMOTE_ADDR'},$contact_name,$contact_email)."\n";
                     my $mailresult = &Apache::resetpw::send_mail($domdesc,$data{'email'},
                                                                  $mailmsg,$contact_name,
                                                                  $contact_email);
@@ -1170,37 +1156,11 @@
     return $msg;
 }
 
-sub create_captcha {
-    my ($output_dir,$db_dir) = @_;
-    my %captcha_params = &captcha_settings();
-    my ($output,$maxtries,$tries) = ('',10,0);
-    while ($tries < $maxtries) {
-        $tries ++;
-        my $captcha = Authen::Captcha->new (
-                                           output_folder => $captcha_params{'output_dir'},
-                                           data_folder   => $captcha_params{'db_dir'},
-                                          );
-        my $md5sum = $captcha->generate_code($captcha_params{'numchars'});
-
-        if (-e $Apache::lonnet::perlvar{'lonCaptchaDir'}.'/'.$md5sum.'.png') {
-            $output = '<input type="hidden" name="crypt" value="'.$md5sum.'" />'."\n".
-                      &mt('Type in the letters/numbers shown below').'&nbsp;'.
-                     '<input type="text" size="5" name="code" value="" /><br />'.
-                     '<img src="'.$captcha_params{'www_output_dir'}.'/'.$md5sum.'.png" />';
-            last;
-        }
-    }
-    return $output;
-}
-
-sub captcha_settings {
-    my %captcha_params = ( 
-                           output_dir     => $Apache::lonnet::perlvar{'lonCaptchaDir'},
-                           www_output_dir => "/captchaspool",
-                           db_dir         => $Apache::lonnet::perlvar{'lonCaptchaDb'},
-                           numchars       => '5',
-                         );
-    return %captcha_params;
+sub create_recaptcha {
+    my $captcha = Captcha::reCAPTCHA->new;
+    return $captcha->get_options_setter({theme => 'white'})."\n".
+           $captcha->get_html('PUBLICKEY'); # generate public key for IP
+                                            # from http://recaptcha.net/
 }
 
 sub getkeys {

--raeburn1260143315--