--- loncom/interface/createaccount.pm 2012/02/06 02:36:29 1.40.2.5.2.1 +++ loncom/interface/createaccount.pm 2012/03/02 20:44:25 1.40.2.5.2.13 @@ -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.1 2012/02/06 02:36:29 raeburn Exp $ +# $Id: createaccount.pm,v 1.40.2.5.2.13 2012/03/02 20:44:25 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->dir_config('reCAPTCHA_PRIVATE'); + my $pubkey = $r->dir_config('reCAPTCHA_PUBLIC'); &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token','courseid']); &Apache::lonacc::get_posted_cgi($r); @@ -100,6 +102,9 @@ sub handler { my ($js,$courseid,$title); if (defined($env{'form.courseid'})) { $courseid = &validate_course($env{'form.courseid'}); + if ($courseid eq 'relate_3H121116c19344ff3relatel1') { + $courseid = 'relate_3e100973b27484f2drelatel1'; + } } if ($courseid ne '') { $js = &catreturn_js(); @@ -225,7 +230,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 +243,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 +253,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 +392,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,32 +403,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.', + 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').'

'; - my $captchaform = &create_recaptcha(); + $output .= '

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

'. + '

'. + &mt('You are about to sign-up for the [_1]Mechanics Online[_2] course.','','').'
'. + $lt{'plse'}.'

    '. + '
  • '.$lt{'inst'}.'
  • '. + '
  • '.$lt{'aftr'}.'
  • '. + '
  • '.$lt{'thes'}.'
'; + my $captchaform = &create_recaptcha($pubkey); if ($captchaform) { - my $submit_text = &mt('Request LON-CAPA account'); + my $submit_text = &mt('Sign-up'); my $emailform = ''; if (grep(/^login$/,@{$cancreate})) { - $output .= &mt('Provide your e-mail address to request a LON-CAPA account,[_1] 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 .= '
'; } @@ -512,7 +532,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') { @@ -534,11 +554,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); @@ -593,7 +614,7 @@ sub call_rulecheck { sub send_token { my ($domain,$email,$server,$domdesc,$contact_name,$contact_email,$courseid) = @_; my $msg = '

'.&mt('Account creation status').'

'. - &mt('Thank you for your request to create a new LON-CAPA account.'). + &mt('Thank you for your request to create a new Mechanics Online account.'). '

'; my $now = time; my %info = ('ip' => $ENV{'REMOTE_ADDR'}, @@ -604,14 +625,28 @@ sub send_token { my $token = &Apache::lonnet::tmpput(\%info,$server,'createaccount'); 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". - &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, - $contact_email); + my $mailsubj = &mt('Your Mechanics Online Course Account'); + my $msgfrom = &mt('Mechanics Online Course Staff'); + my $mailmsg = &mt('Greetings.')."\n\n". + &mt('Thank you for your interest in our Online Mechanics Course.'). + ' '. + &mt('In order to complete the registration process, please open the following link in your web browser:'). + "\n\n". + &Apache::lonnet::absolute_url().'/adm/createaccount?token='.$esc_token. + "\n\n". + &mt('This link will take you to a sign-up page where you will be asked to provide some general information and finalize the registration process.'). + ' '. + &mt('A self-test (for review) is available within the course, for you to test your level of preparation.'). + "\n\n". + &mt('Best Regards,'). + "\n\n". + &mt('RELATE Group')."\n"; + + my $result = &Apache::resetpw::send_mail('MIT',$email,$mailmsg, + $msgfrom,$contact_email, + $mailsubj); if ($result eq 'ok') { - $msg .= &mt('A message has been sent to the e-mail address you provided.').'
'.&mt('The message includes the web address for the link you will use to complete the account creation process.').'
'.&mt("The link included in the message will be valid for the next [_1]two[_2] hours.",'',''); + $msg .= &mt('A message has been sent to the e-mail address you provided.').'
'.&mt('The message includes the web address for the link you will use to complete the sign-up process.').'
'.&mt("The link included in the message will be valid for the next [_1]two[_2] hours.",'',''); } else { $msg .= ''. &mt('An error occurred when sending a message to the e-mail address you provided.').'
'. @@ -1194,10 +1229,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 {