--- loncom/interface/createaccount.pm 2012/02/08 19:08:41 1.40.2.5.2.2 +++ loncom/interface/createaccount.pm 2012/02/13 17:22:56 1.40.2.5.2.6 @@ -3,7 +3,7 @@ # institutional log-in ID (institutional authentication required - localauth # or kerberos) or an e-mail address. # -# $Id: createaccount.pm,v 1.40.2.5.2.2 2012/02/08 19:08:41 raeburn Exp $ +# $Id: createaccount.pm,v 1.40.2.5.2.6 2012/02/13 17:22:56 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -57,6 +57,8 @@ sub handler { my $sso_username = $r->subprocess_env->get('REDIRECT_SSOUserUnknown'); my $sso_domain = $r->subprocess_env->get('REDIRECT_SSOUserDomain'); + my $privkey = $r->subprocess_env->get('reCAPTCHA_PRIVATE'); + my $pubkey = $r->subprocess_env->get('reCAPTCHA_PUBLIC') &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token','courseid']); &Apache::lonacc::get_posted_cgi($r); @@ -225,7 +227,7 @@ sub handler { $output = &process_email_request($env{'form.useremail'},$domain,$domdesc, $contact_name,$contact_email,$cancreate, $lonhost,$domconfig{'usercreation'}, - $courseid); + $courseid,$privkey); } elsif (!$token) { &print_header($r,$start_page,$courseid); my $now=time; @@ -238,7 +240,7 @@ sub handler { $r->print(&javascript_validmail()); } $output = &print_username_form($domain,$domdesc,$cancreate,$now,$lonhost, - $courseid); + $courseid,$pubkey); } $r->print($output); &print_footer($r); @@ -248,7 +250,7 @@ sub handler { sub get_custom_name { my ($domain) = @_; if ($domain eq 'relate') { - return 'Learn-Physics'; + return 'Mechanics Online'; } else { return lc($domain); } @@ -387,7 +389,7 @@ function validate_email() { var lcemail = emailaddr.toLowerCase(); if (emailaddr != lcemail) { field.value = lcemail; - alert("Learn-Physics usernames are all lower case.\\nAccordingly your username will be "+lcemail+" once activated."); + alert("Mechanics Online usernames are all lower case.\\nAccordingly your username will be "+lcemail+" once activated."); } } return true; @@ -398,36 +400,47 @@ ENDSCRIPT } sub print_username_form { - my ($domain,$domdesc,$cancreate,$now,$lonhost,$courseid) = @_; - my %lt = &Apache::lonlocal::texthash( - unam => 'username', - udom => 'domain', - uemail => 'E-mail address in LON-CAPA', - proc => 'Proceed'); + my ($domain,$domdesc,$cancreate,$now,$lonhost,$courseid,$pubkey) = @_; + my %lt = &Apache::lonlocal::texthash ( + unam => 'username', + udom => 'domain', + uemail => 'E-mail address in LON-CAPA', + proc => 'Proceed', + crea => 'Create account with a username provided by this institution', + crlc => 'Create LON-CAPA account', + type => 'Type in your log-in ID and password to find out.', + sign => 'You are about to sign-up for the Mechanics Online course.', + plse => 'Please enter a valid e-mail address below.', + inst => 'Instructions on how to activate your account will be sent to the e-mail address you provide.', + aftr => 'After completing the activation process you will have access to a "self test" that will help you assess your readiness for the course.', + thes => 'The same account will be used for access to the Mechanics Online course, once it becomes available on March 1, 2012', + ); my $output; if (ref($cancreate) eq 'ARRAY') { if (grep(/^login$/,@{$cancreate})) { my %domdefaults = &Apache::lonnet::get_domain_defaults($domain); if ((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || ($domdefaults{'auth_def'} eq 'localauth')) { - $output = '

'.&mt('Create account with a username provided by this institution').'

'; - my $submit_text = &mt('Create LON-CAPA account'); - $output .= &mt('If you already have a log-in ID at this institution,[_1] you may be able to use it for LON-CAPA.','
').'

'.&mt('Type in your log-in ID and password to find out.').'

'; + $output = '

'.$lt{'crea'}.'

'; + my $submit_text = $lt{'crlc'}; + $output .= &mt('If you already have a log-in ID at this institution,[_1] you may be able to use it for LON-CAPA.','
'). + '

'.$lt{'type'}.'

'; $output .= &login_box($now,$lonhost,$courseid,$submit_text, $domain,'createaccount').'
'; } } if (grep(/^email$/,@{$cancreate})) { $output .= '

'.&mt('Create account with an e-mail address as your username').'

'. - &mt('You are about to sign-up for a Learn Physics account so you can take the pre-requisite test for enrollment in the online course.').'
'. - &mt('Your performance on the test will help both you and us gauge your readiness to take the course.').'
'. - &mt('Although the pre-test exam will be the basis for admitting people into the course, we can only accommodate a limited number of students.').'
'. - &mt('We will e-mail you with instructions on how to access the course by the end of February, if we are able to accommodate you.').'
'; - my $captchaform = &create_recaptcha(); + $lt{'sign'}.'
'. + $lt{'plse'}.'
'. + $lt{'inst'}.'
'. + $lt{'aftr'}.'
'. + $lt{'thes'}.'
'; + my $captchaform = &create_recaptcha($pubkey); if ($captchaform) { my $submit_text = &mt('Sign-up'); my $emailform = ''; if (grep(/^login$/,@{$cancreate})) { - $output .= &mt('Provide your e-mail address to sign up for a Learn Physics account if you do not have a log-in ID at your institution.','
').'

'; + $output .= &mt('Provide your e-mail address to sign up for a Mechanics Online account [_1]if you do not have a log-in ID at your institution.','
').'

'; } else { $output .= '
'; } @@ -516,7 +529,7 @@ sub login_box { sub process_email_request { my ($useremail,$domain,$domdesc,$contact_name,$contact_email,$cancreate, - $server,$settings,$courseid) = @_; + $server,$settings,$courseid,$privkey) = @_; $useremail = lc($env{'form.useremail'}); my $output; if (ref($cancreate) eq 'ARRAY') { @@ -538,11 +551,12 @@ sub process_email_request { my $captcha = Captcha::reCAPTCHA->new; my $captcha_result = $captcha->check_answer( - 'PRIVATEKEY', + $privkey, $ENV{'REMOTE_ADDR'}, $env{'form.recaptcha_challenge_field'}, $env{'form.recaptcha_response_field'}, ); + # PRIVATE key from https://www.google.com/recaptcha if (!$captcha_result->{is_valid}) { $output = &invalid_state('captcha',$domdesc,$contact_name, $contact_email); @@ -609,7 +623,7 @@ sub send_token { 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 [_1] account.',$showtime,$domdesc).). "\n". + my $mailmsg = &mt('A request was submitted on [_1] for creation of a [_2] account.',$showtime,$domdesc)."\n". &mt('To complete this process please open a web browser and enter the following URL in the address/location box: [_1]', "\n\n".&Apache::lonnet::absolute_url().'/adm/createaccount?token='.$esc_token); my $result = &Apache::resetpw::send_mail($domdesc,$email,$mailmsg,$contact_name, @@ -1198,10 +1212,11 @@ sub linkto_email_help { } sub create_recaptcha { + my ($pubkey) = @_; my $captcha = Captcha::reCAPTCHA->new; + # generate PUBLICKEY from https://www.google.com/recaptcha return $captcha->get_options_setter({theme => 'white'})."\n". - $captcha->get_html('PUBLICKEY'); # generate public key for IP - # from http://recaptcha.net/ + $captcha->get_html($pubkey); } sub getkeys {