--- loncom/interface/createaccount.pm 2012/02/13 05:24:22 1.40.2.5.2.5
+++ loncom/interface/createaccount.pm 2012/03/01 00:25:15 1.40.2.5.2.11
@@ -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.5 2012/02/13 05:24:22 raeburn Exp $
+# $Id: createaccount.pm,v 1.40.2.5.2.11 2012/03/01 00:25:15 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);
@@ -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);
@@ -398,7 +400,7 @@ ENDSCRIPT
}
sub print_username_form {
- my ($domain,$domdesc,$cancreate,$now,$lonhost,$courseid) = @_;
+ my ($domain,$domdesc,$cancreate,$now,$lonhost,$courseid,$pubkey) = @_;
my %lt = &Apache::lonlocal::texthash (
unam => 'username',
udom => 'domain',
@@ -407,11 +409,10 @@ sub print_username_form {
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',
+ 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') {
@@ -428,12 +429,13 @@ sub print_username_form {
}
if (grep(/^email$/,@{$cancreate})) {
$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('Sign-up');
my $emailform = '';
@@ -527,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') {
@@ -549,7 +551,7 @@ 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'},
@@ -609,7 +611,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'},
@@ -620,12 +622,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 [_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,
- $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('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 sign-up process.').' '.&mt("The link included in the message will be valid for the next [_1]two[_2] hours.",'','');
} else {
@@ -1210,10 +1228,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');
+ $captcha->get_html($pubkey);
}
sub getkeys {