--- loncom/interface/createaccount.pm 2012/02/13 05:24:22 1.40.2.5.2.5
+++ loncom/interface/createaccount.pm 2012/05/01 16:09:26 1.40.2.5.2.17
@@ -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.17 2012/05/01 16:09:26 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,10 @@ sub handler {
my ($js,$courseid,$title);
if (defined($env{'form.courseid'})) {
$courseid = &validate_course($env{'form.courseid'});
+ if (($courseid eq 'relate_3H121116c19344ff3relatel1') ||
+ ($courseid eq 'relate_3e100973b27484f2drelatel1')) {
+ $courseid = 'relate_2764113e81b9e4f0crelatel1';
+ }
}
if ($courseid ne '') {
$js = &catreturn_js();
@@ -225,7 +231,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 +244,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 +404,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 +413,12 @@ 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',
+ aftr => 'After completing the activation process you will be directed to the course.',
+ ther => 'There you will have access to a "self test" that will help you assess your readiness for the course.',
+ ywil => 'You will also have access to introductory material and to the course schedule and policies.',
+ yous => 'Your user id for the course is your email address.',
);
my $output;
if (ref($cancreate) eq 'ARRAY') {
@@ -428,12 +435,14 @@ sub print_username_form {
}
if (grep(/^email$/,@{$cancreate})) {
$output .= '
'.&mt('Create account with an e-mail address as your username').'
';
+ my $captchaform = &create_recaptcha($pubkey);
if ($captchaform) {
my $submit_text = &mt('Sign-up');
my $emailform = '';
@@ -527,7 +536,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 +558,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 +618,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 +629,26 @@ 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('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 {
@@ -674,7 +697,7 @@ sub process_mailtoken {
}
my %form = &start_session($r,$data{'username'},$domain,
$lonhost,$data{'courseid'},
- $token);
+ $token,'new');
$nostart = 1;
$noend = 1;
} else {
@@ -701,7 +724,7 @@ sub process_mailtoken {
}
sub start_session {
- my ($r,$username,$domain,$lonhost,$courseid,$token) = @_;
+ my ($r,$username,$domain,$lonhost,$courseid,$token,$usertype) = @_;
my %form = (
uname => $username,
udom => $domain,
@@ -712,6 +735,9 @@ sub start_session {
if ($courseid ne '') {
$form{'courseid'} = $courseid;
$firsturl = '/adm/selfenroll?courseid='.$courseid;
+ if ($usertype) {
+ $firsturl .= '&usertype='.$usertype;
+ }
}
}
if ($r->dir_config('lonBalancer') eq 'yes') {
@@ -1121,7 +1147,7 @@ sub username_activation {
if ($result eq 'ok') {
my $delete = &Apache::lonnet::tmpdel($env{'form.authtoken'});
$output = &mt('A LON-CAPA account has been created for username: [_1] in domain: [_2].',$username,$domain);
- my %form = &start_session($r,$username,$domain,$lonhost,$courseid);
+ my %form = &start_session($r,$username,$domain,$lonhost,$courseid,undef,'new');
my $nostart = 1;
return ('ok',$output,$nostart);
} else {
@@ -1210,10 +1236,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 {