--- loncom/interface/createaccount.pm 2015/06/09 21:22:55 1.70
+++ loncom/interface/createaccount.pm 2017/11/16 23:38:40 1.72.2.1
@@ -4,7 +4,7 @@
# kerberos, or SSO) or an e-mail address. Requests to use an e-mail address as
# username may be processed automatically, or may be queued for approval.
#
-# $Id: createaccount.pm,v 1.70 2015/06/09 21:22:55 damieng Exp $
+# $Id: createaccount.pm,v 1.72.2.1 2017/11/16 23:38:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -278,7 +278,7 @@ sub handler {
&print_header($r,$start_page,$courseid);
my $now=time;
if ((grep(/^login$/,@{$cancreate})) && (!grep(/^email$/,@{$cancreate}))) {
- if (open(my $jsh,"<$include/londes.js")) {
+ if (open(my $jsh,"<","$include/londes.js")) {
while(my $line = <$jsh>) {
$r->print($line);
}
@@ -319,7 +319,7 @@ sub print_footer {
$r->print('
');
@@ -366,7 +366,7 @@ sub selfenroll_crumbs {
}
sub javascript_setforms {
- my ($now,$emailusername,$captcha,$usertype) = @_;
+ my ($now,$emailusername,$captcha,$usertype,$recaptchaversion) = @_;
my ($setuserinfo,@required,$requiredchk);
if (ref($emailusername) eq 'HASH') {
if (ref($emailusername->{$usertype}) eq 'HASH') {
@@ -382,9 +382,11 @@ sub javascript_setforms {
$setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n".
' server.elements.crypt.value=client.elements.crypt.value;'."\n";
} elsif ($captcha eq 'recaptcha') {
- $setuserinfo .=
+ if ($recaptchaversion ne '2') {
+ $setuserinfo .=
' server.elements.recaptcha_challenge_field.value=client.elements.recaptcha_challenge_field.value;'."\n".
' server.elements.recaptcha_response_field.value=client.elements.recaptcha_response_field.value;'."\n";
+ }
}
}
if (@required) {
@@ -431,7 +433,7 @@ $requiredchk
initkeys();
server.elements.upass.value
- = crypted(client.elements.upass$now.value);
+ = getCrypted(client.elements.upass$now.value);
client.elements.uname.value='';
client.elements.upass$now.value='';
@@ -444,9 +446,13 @@ $setuserinfo
}
return false;
}
+
// ]]>
ENDSCRIPT
+ if (($captcha eq 'recaptcha') && ($recaptchaversion eq '2')) {
+ $js .= "\n".''."\n";
+ }
return $js;
}
@@ -543,7 +549,8 @@ sub print_username_form {
}
if (grep(/^email$/,@{$cancreate})) {
$output .= '
'.&mt('Create account with an e-mail address as your username').'
';
- my ($captchaform,$error,$captcha) = &Apache::loncommon::captcha_display('usercreation',$lonhost);
+ my ($captchaform,$error,$captcha,$recaptchaversion) =
+ &Apache::loncommon::captcha_display('usercreation',$lonhost);
if ($error) {
my $helpdesk = '/adm/helpdesk?origurl=%2fadm%2fcreateaccount';
if ($courseid ne '') {
@@ -572,7 +579,8 @@ sub print_username_form {
$lt{'yopw'}.' ';
}
$output .= &print_dataentry_form($r,$domain,$lonhost,$include,$now,$captchaform,
- $courseid,$emailusername,$captcha,$usertype);
+ $courseid,$emailusername,$captcha,$usertype,
+ $recaptchaversion);
}
$output .= '
';
}
@@ -885,15 +893,15 @@ sub start_session {
#
sub print_dataentry_form {
my ($r,$domain,$lonhost,$include,$now,$captchaform,$courseid,$emailusername,$captcha,
- $usertype) = @_;
+ $usertype,$recaptchaversion) = @_;
my ($error,$output);
- if (open(my $jsh,"<$include/londes.js")) {
+ if (open(my $jsh,"<","$include/londes.js")) {
while(my $line = <$jsh>) {
$r->print($line);
}
close($jsh);
- $output = &javascript_setforms($now,$emailusername,$captcha,$usertype)."\n".
- &javascript_checkpass($now,'email');
+ $output = &javascript_setforms($now,$emailusername,$captcha,$usertype,$recaptchaversion).
+ "\n".&javascript_checkpass($now,'email');
my ($lkey,$ukey) = &Apache::loncommon::des_keys();
my ($lextkey,$uextkey) = &getkeys($lkey,$ukey);
my $logtoken=Apache::lonnet::reply('tmpput:'.$ukey.$lkey.'&createaccount:createaccount',
@@ -917,10 +925,15 @@ sub print_dataentry_form {
';
} elsif ($captcha eq 'recaptcha') {
- $output .= '
+ if ($recaptchaversion eq '2') {
+ $output .= "$captchaform\n";
+ undef($captchaform);
+ } else {
+ $output .= '
';
+ }
}
$output .= <<"ENDSERVERFORM";
@@ -1624,14 +1637,14 @@ sub sso_logout_frag {
if (defined($r->dir_config('lonSSOUserLogoutMessageFile_'.$domain))) {
my $msgfile = $r->dir_config('lonSSOUserLogoutMessageFile_'.$domain);
if (-e $msgfile) {
- open(my $fh,"<$msgfile");
+ open(my $fh,"<",$msgfile);
$endsessionmsg = join('',<$fh>);
close($fh);
}
} elsif (defined($r->dir_config('lonSSOUserLogoutMessageFile'))) {
my $msgfile = $r->dir_config('lonSSOUserLogoutMessageFile');
if (-e $msgfile) {
- open(my $fh,"<$msgfile");
+ open(my $fh,"<",$msgfile);
$endsessionmsg = join('',<$fh>);
close($fh);
}