--- loncom/interface/createaccount.pm 2016/02/17 19:15:48 1.71 +++ loncom/interface/createaccount.pm 2016/02/19 20:28:46 1.72 @@ -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.71 2016/02/17 19:15:48 raeburn Exp $ +# $Id: createaccount.pm,v 1.72 2016/02/19 20:28:46 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -319,7 +319,7 @@ sub print_footer { $r->print('
'. &Apache::lonhtmlcommon::echo_form_input(['backto','logtoken', 'token','serverid','uname','upass','phase','create_with_email', - 'code','crypt','cfirstname','clastname', + 'code','crypt','cfirstname','clastname','g-recaptcha-response', 'recaptcha_challenge_field','recaptcha_response_field', 'cmiddlename','cgeneration','cpermanentemail','cid']). '
'); @@ -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) { @@ -448,6 +450,9 @@ $setuserinfo // ]]> ENDSCRIPT + if (($captcha eq 'recaptcha') && ($recaptchaversion eq '2')) { + $js .= "\n".''."\n"; + } return $js; } @@ -544,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 '') { @@ -573,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 .= '
'; } @@ -886,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")) { 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', @@ -918,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";