version 1.72.4.2, 2019/07/29 13:54:02
|
version 1.72.4.7.2.2, 2023/01/23 22:48:27
|
Line 437 sub javascript_setforms {
|
Line 437 sub javascript_setforms {
|
} |
} |
$setuserinfo .= ' server.elements.'.$key.'.value=client.elements.'.$key.'.value;'."\n"; |
$setuserinfo .= ' server.elements.'.$key.'.value=client.elements.'.$key.'.value;'."\n"; |
} |
} |
$setuserinfo .= ' server.elements.type.value=client.elements.type.value;'."\n"; |
if ($usertype ne '') { |
|
$setuserinfo .= ' server.elements.type.value=client.elements.type.value;'."\n"; |
|
} |
} |
} |
if ($captcha eq 'original') { |
if ($captcha eq 'original') { |
$setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n". |
$setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n". |
Line 520 ENDSCRIPT
|
Line 522 ENDSCRIPT
|
} |
} |
|
|
sub javascript_checkpass { |
sub javascript_checkpass { |
my ($now,$context) = @_; |
my ($now,$context,$domain) = @_; |
my $nopass = &mt('You must enter a password.'); |
my $nopass = &mt('You must enter a password.'); |
my $mismatchpass = &mt('The passwords you entered did not match.')."\n". |
my $mismatchpass = &mt('The passwords you entered did not match.')."\n". |
&mt('Please try again.'); |
&mt('Please try again.'); |
|
my ($numrules,$intargjs) = |
|
&Apache::loncommon::passwd_validation_js('upass',$domain); |
&js_escape(\$nopass); |
&js_escape(\$nopass); |
&js_escape(\$mismatchpass); |
&js_escape(\$mismatchpass); |
my $js = <<"ENDSCRIPT"; |
my $js = <<"ENDSCRIPT"; |
Line 540 sub javascript_checkpass {
|
Line 544 sub javascript_checkpass {
|
return false; |
return false; |
} |
} |
if (upass == upasscheck) { |
if (upass == upasscheck) { |
|
var numrules = $numrules; |
|
if (numrules > 0) { |
|
$intargjs |
|
} |
client.elements.upasscheck$now.value=''; |
client.elements.upasscheck$now.value=''; |
if (validate_email(client)) { |
if (validate_email(client)) { |
send(one,two,'$context'); |
send(one,two,'$context'); |
Line 563 sub javascript_validmail {
|
Line 571 sub javascript_validmail {
|
my %js_lt = &Apache::lonlocal::texthash ( |
my %js_lt = &Apache::lonlocal::texthash ( |
email => 'The e-mail address you entered', |
email => 'The e-mail address you entered', |
notv => 'is not a valid e-mail address', |
notv => 'is not a valid e-mail address', |
avae => 'A valid e-mail address is not formed when the value you entered', |
avae => 'A valid e-mail address is not formed when the value you entered is combined with the required domain', |
isco => 'is combined with the required domain', |
|
); |
); |
my $output = "\n".'<script type="text/javascript">'."\n". |
my $output = "\n".'<script type="text/javascript">'."\n". |
'// <![CDATA['."\n". |
'// <![CDATA['."\n". |
Line 576 function validate_email(client) {
|
Line 583 function validate_email(client) {
|
var condition = '$condition'; |
var condition = '$condition'; |
if (validmail(field,condition) == false) { |
if (validmail(field,condition) == false) { |
if ((condition != undefined) && (condition != '')) { |
if ((condition != undefined) && (condition != '')) { |
alert("$js_lt{'avae'}: "+field.value+" $js_lt{'isco'}: "+condition); |
alert("$js_lt{'avae'}: "+condition); |
} else { |
} else { |
alert("$js_lt{'email'}: "+field.value+" $js_lt{'notv'}."); |
alert("$js_lt{'email'}: "+field.value+" $js_lt{'notv'}."); |
} |
} |
Line 733 sub login_box {
|
Line 740 sub login_box {
|
$lonhost); |
$lonhost); |
$output = &serverform($logtoken,$lonhost,undef,$courseid,$context); |
$output = &serverform($logtoken,$lonhost,undef,$courseid,$context); |
my $unameform = '<input type="text" name="uname" size="20" value="" autocomplete="off" />'; |
my $unameform = '<input type="text" name="uname" size="20" value="" autocomplete="off" />'; |
my $upassform = '<input type="password" name="upass'.$now.'" size="20" autocomplete="off" />'; |
my $upassform = '<input type="password" name="upass'.$now.'" size="20" autocomplete="new-password" />'; |
$output .= '<form name="client" method="post" action="" onsubmit="return(send('."'server','client'".'));">'."\n". |
$output .= '<form name="client" method="post" action="" onsubmit="return(send('."'server','client'".'));">'."\n". |
&Apache::lonhtmlcommon::start_pick_box()."\n". |
&Apache::lonhtmlcommon::start_pick_box()."\n". |
&Apache::lonhtmlcommon::row_title($titles{$context}, |
&Apache::lonhtmlcommon::row_title($titles{$context}, |
Line 835 sub process_email_request {
|
Line 842 sub process_email_request {
|
} else { |
} else { |
my ($captcha_chk,$captcha_error) = &Apache::loncommon::captcha_response('usercreation',$server); |
my ($captcha_chk,$captcha_error) = &Apache::loncommon::captcha_response('usercreation',$server); |
if ($captcha_chk != 1) { |
if ($captcha_chk != 1) { |
$output = &invalid_state('captcha',$domdesc,$contact_name, |
$output = '<span class="LC_warning">'. |
$contact_email,$captcha_error); |
&mt('Validation of the code you entered failed.').'</span>'. |
|
'<br />'.$captcha_error."\n".'<br /><p>'. |
|
&mt('[_1]Return[_2] to the previous page to try again.', |
|
'<a href="javascript:document.retryemail.submit();">','</a>')."\n". |
|
'<form name="retryemail" action="/adm/createaccount" method="post" />'. |
|
'<input type="hidden" name="domain" value="'.$domain.'" />'."\n"; |
|
if ($env{'form.courseid'} =~ /^$match_domain\_$match_courseid$/) { |
|
$output .= '<input type="hidden" name="courseid" value="'.$env{'form.courseid'}.'" />'."\n"; |
|
} |
|
if ($env{'form.type'}) { |
|
my $usertype = &get_usertype($domain); |
|
if ($usertype ne '') { |
|
$output .= '<input type="hidden" name="type" value="'.$usertype.'" />'."\n". |
|
'<input type="hidden" name="reportedtype" value="'.&mt('Submit').'" />'."\n"; |
|
} |
|
} |
|
$output .= '</form></p>'; |
return $output; |
return $output; |
} |
} |
my (%rulematch,%inst_results,%curr_rules,%got_rules,%alerts); |
my (%rulematch,%inst_results,%curr_rules,%got_rules,%alerts); |
Line 894 sub send_token {
|
Line 917 sub send_token {
|
$env{'form.logtoken'} =~ s/(`)//g; |
$env{'form.logtoken'} =~ s/(`)//g; |
if ($env{'form.logtoken'}) { |
if ($env{'form.logtoken'}) { |
my $logtoken = $env{'form.logtoken'}; |
my $logtoken = $env{'form.logtoken'}; |
|
my $earlyout; |
my $tmpinfo=Apache::lonnet::reply('tmpget:'.$logtoken,$server); |
my $tmpinfo=Apache::lonnet::reply('tmpget:'.$logtoken,$server); |
if (($tmpinfo=~/^error/) || ($tmpinfo eq 'con_lost')) { |
if (($tmpinfo=~/^error/) || ($tmpinfo eq 'con_lost')) { |
$msg = &mt('Information needed to process your request is missing, inaccessible or expired.') |
$msg = &mt('Information needed to process your request is missing, inaccessible or expired.') |
.'<br />'.&mt('Return to the previous page to try again.'); |
.'<br /><p>'.&mt('[_1]Return[_2] to the previous page to try again.', |
|
'<a href="javascript:document.retryemail.submit();">','</a>'); |
|
$earlyout = 1; |
} else { |
} else { |
my $reply = &Apache::lonnet::reply('tmpdel:'.$logtoken,$server); |
my $reply = &Apache::lonnet::reply('tmpdel:'.$logtoken,$server); |
unless ($reply eq 'ok') { |
unless ($reply eq 'ok') { |
$msg .= &mt('Request could not be processed.'); |
$msg .= &mt('Request could not be processed.'); |
} |
} |
} |
} |
my %info = ('ip' => $ENV{'REMOTE_ADDR'}, |
# Check if the password entered by the user satisfies domain's requirements |
|
my %passwdconf = &Apache::lonnet::get_passwdconf($domain); |
|
my ($min,$max,@chars); |
|
$min = $Apache::lonnet::passwdmin; |
|
if (ref($passwdconf{'chars'}) eq 'ARRAY') { |
|
if ($passwdconf{'min'} =~ /^\d+$/) { |
|
if ($passwdconf{'min'} > $min) { |
|
$min = $passwdconf{'min'}; |
|
} |
|
} |
|
if ($passwdconf{'max'} =~ /^\d+$/) { |
|
$max = $passwdconf{'max'}; |
|
} |
|
@chars = @{$passwdconf{'chars'}}; |
|
} |
|
my $encpass = $env{'form.upass'}; |
|
if ($encpass eq '') { |
|
$msg = &mt('Password retrieved was blank.'). |
|
'<br /><p>'.&mt('[_1]Return[_2] to the previous page to try again.', |
|
'<a href="javascript:document.retryemail.submit();">','</a>'); |
|
$earlyout = 1; |
|
} else { |
|
# Split the logtoken to retrieve the DES key and decrypt the encypted password |
|
my ($key,$caller)=split(/&/,$tmpinfo); |
|
if ($caller eq 'createaccount') { |
|
my $plainpass = &Apache::loncommon::des_decrypt($key,$encpass); |
|
if (($min > 0) || ($max ne '') || (@chars > 0)) { |
|
my $warning = &Apache::loncommon::check_passwd_rules($domain,$plainpass); |
|
if ($warning) { |
|
$msg = $warning. |
|
'<p>'.&mt('[_1]Return[_2] to the previous page to try again.', |
|
'<a href="javascript:document.retryemail.submit();">','</a>'); |
|
$earlyout = 1; |
|
} |
|
} |
|
} |
|
} |
|
if ($earlyout) { |
|
$msg .= '<form name="retryemail" action="/adm/createaccount" method="post" />'. |
|
'<input type="hidden" name="domain" value="'.$domain.'" />'."\n"; |
|
if ($env{'form.courseid'} =~ /^$match_domain\_$match_courseid$/) { |
|
$msg .= '<input type="hidden" name="courseid" value="'.$env{'form.courseid'}.'" />'."\n"; |
|
} |
|
if ($env{'form.type'}) { |
|
my $usertype = &get_usertype($domain); |
|
if ($usertype ne '') { |
|
$msg .= '<input type="hidden" name="type" value="'.$usertype.'" />'. |
|
'<input type="hidden" name="reportedtype" value="'.&mt('Submit').'" />'."\n"; |
|
} |
|
} |
|
$msg .= '</form></p>'; |
|
return $msg; |
|
} |
|
my $ip = &Apache::lonnet::get_requestor_ip(); |
|
my %info = ('ip' => $ip, |
'time' => $now, |
'time' => $now, |
'domain' => $domain, |
'domain' => $domain, |
'username' => $email, |
'username' => $email, |
Line 1020 sub process_mailtoken {
|
Line 1100 sub process_mailtoken {
|
&create_account($r,$domain,$domdesc,\%data); |
&create_account($r,$domain,$domdesc,\%data); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$msg = $output; |
$msg = $output; |
|
my $ip = &Apache::lonnet::get_requestor_ip(); |
my $shownow = &Apache::lonlocal::locallocaltime($now); |
my $shownow = &Apache::lonlocal::locallocaltime($now); |
my $mailmsg = &mt('A LON-CAPA account for the institution: [_1] has been created [_2] from IP address: [_3]. If you did not perform this action or authorize it, please contact the [_4] ([_5]).',$domdesc,$shownow,$ENV{'REMOTE_ADDR'},$contact_name,$contact_email)."\n"; |
my $mailmsg = &mt('A LON-CAPA account for the institution: [_1] has been created [_2] from IP address: [_3]. If you did not perform this action or authorize it, please contact the [_4] ([_5]).',$domdesc,$shownow,$ip,$contact_name,$contact_email)."\n"; |
my $mailresult = &Apache::resetpw::send_mail($domdesc,$data{'email'}, |
my $mailresult = &Apache::resetpw::send_mail($domdesc,$data{'email'}, |
$mailmsg,$contact_name, |
$mailmsg,$contact_name, |
$contact_email); |
$contact_email); |
Line 1096 sub print_dataentry_form {
|
Line 1177 sub print_dataentry_form {
|
close($jsh); |
close($jsh); |
$output = &javascript_setforms($now,$emailusername,$captcha,$usertype,$recaptchaversion, |
$output = &javascript_setforms($now,$emailusername,$captcha,$usertype,$recaptchaversion, |
$usernameset,$condition,$excluded). |
$usernameset,$condition,$excluded). |
"\n".&javascript_checkpass($now,'email'); |
"\n".&javascript_checkpass($now,'email',$domain); |
my ($lkey,$ukey) = &Apache::loncommon::des_keys(); |
my ($lkey,$ukey) = &Apache::loncommon::des_keys(); |
my ($lextkey,$uextkey) = &getkeys($lkey,$ukey); |
my ($lextkey,$uextkey) = &getkeys($lkey,$ukey); |
my $logtoken=Apache::lonnet::reply('tmpput:'.$ukey.$lkey.'&createaccount:createaccount', |
my $logtoken=Apache::lonnet::reply('tmpput:'.$ukey.$lkey.'&createaccount:createaccount', |
$lonhost); |
$lonhost); |
$output .= |
my $showsubmit = 1; |
|
my $serverform = |
'<form name="createaccount" method="post" target="_top" action="/adm/createaccount">'; |
'<form name="createaccount" method="post" target="_top" action="/adm/createaccount">'; |
if ($courseid ne '') { |
if ($courseid ne '') { |
$output .= '<input type="hidden" name="courseid" value="'.$courseid.'"/>'."\n"; |
$serverform .= '<input type="hidden" name="courseid" value="'.$courseid.'"/>'."\n"; |
} |
} |
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
foreach my $field (sort(keys(%{$emailusername->{$usertype}}))) { |
foreach my $field (sort(keys(%{$emailusername->{$usertype}}))) { |
$output .= '<input type="hidden" name="'.$field.'" value="" />'."\n"; |
$serverform .= '<input type="hidden" name="'.$field.'" value="" />'."\n"; |
} |
} |
} |
} |
} |
} |
if ($captcha eq 'original') { |
if ($captcha eq 'original') { |
$output .= ' |
$serverform .= ' |
<input type="hidden" name="crypt" value="" /> |
<input type="hidden" name="crypt" value="" /> |
<input type="hidden" name="code" value="" /> |
<input type="hidden" name="code" value="" /> |
'; |
'; |
} elsif ($captcha eq 'recaptcha') { |
} elsif ($captcha eq 'recaptcha') { |
if ($recaptchaversion eq '2') { |
if ($recaptchaversion eq '2') { |
$output .= "$captchaform\n"; |
$serverform .= &Apache::lonhtmlcommon::start_pick_box(). |
|
&Apache::lonhtmlcommon::row_title(&mt('Validation').'<b>*</b>', |
|
'LC_pick_box_title', |
|
'LC_oddrow_value')."\n". |
|
$captchaform. |
|
&Apache::lonhtmlcommon::row_closure(1)."\n". |
|
&Apache::lonhtmlcommon::row_title()."\n". |
|
'<br /><input type="button" name="createaccount" value="'. |
|
&mt('Create account').'" onclick="checkpass('."'createaccount','newemail'".')" />'. |
|
&Apache::lonhtmlcommon::row_closure(1)."\n". |
|
&Apache::lonhtmlcommon::end_pick_box(); |
undef($captchaform); |
undef($captchaform); |
|
undef($showsubmit); |
} else { |
} else { |
$output .= ' |
$serverform .= ' |
<input type="hidden" name="recaptcha_challenge_field" value="" /> |
<input type="hidden" name="recaptcha_challenge_field" value="" /> |
<input type="hidden" name="recaptcha_response_field" value="" /> |
<input type="hidden" name="recaptcha_response_field" value="" /> |
'; |
'; |
} |
} |
} |
} |
if ($usertype ne '') { |
if ($usertype ne '') { |
$output .= '<input type="hidden" name="type" value="'. |
$serverform .= '<input type="hidden" name="type" value="'. |
&HTML::Entities::encode($usertype,'\'<>"&').'" />'."\n"; |
&HTML::Entities::encode($usertype,'\'<>"&').'" />'."\n"; |
} |
} |
if ($usernameset eq 'free') { |
if ($usernameset eq 'free') { |
$output .= '<input type="hidden" name="username" value="" />'."\n"; |
$serverform .= '<input type="hidden" name="username" value="" />'."\n"; |
} |
} |
$output .= <<"ENDSERVERFORM"; |
$serverform .= <<"ENDSERVERFORM"; |
<input type="hidden" name="logtoken" value="$logtoken" /> |
<input type="hidden" name="logtoken" value="$logtoken" /> |
<input type="hidden" name="serverid" value="$lonhost" /> |
<input type="hidden" name="serverid" value="$lonhost" /> |
<input type="hidden" name="uname" value="" /> |
<input type="hidden" name="uname" value="" /> |
Line 1148 sub print_dataentry_form {
|
Line 1241 sub print_dataentry_form {
|
ENDSERVERFORM |
ENDSERVERFORM |
my $beginclientform = '<form name="newemail" method="post" action="" '. |
my $beginclientform = '<form name="newemail" method="post" action="" '. |
'onsubmit="return checkpass('."'createaccount','newemail'".');">'."\n"; |
'onsubmit="return checkpass('."'createaccount','newemail'".');">'."\n"; |
my $endclientform = '<input type="hidden" name="udom" value="'.$domain.'" />'."\n". |
my $endclientform; |
'<input type="hidden" name="lextkey" value="'.$lextkey.'" />'."\n". |
unless ($showsubmit) { |
'<input type="hidden" name="uextkey" value="'.$uextkey.'" />'."\n". |
if ($usertype ne '') { |
'</form>'."\n". |
$endclientform = '<input type="hidden" name="type" value="'. |
'<p class="LC_info">'.&mt('Fields marked [_1]*[_2] are required.','<b>','</b>').'</p>'; |
&HTML::Entities::encode($usertype,'\'<>"&').'" />'."\n"; |
|
} |
|
} |
|
$endclientform .= '<input type="hidden" name="udom" value="'.$domain.'" />'."\n". |
|
'<input type="hidden" name="lextkey" value="'.$lextkey.'" />'."\n". |
|
'<input type="hidden" name="uextkey" value="'.$uextkey.'" />'."\n". |
|
'</form>'."\n"; |
my ($datatable,$rowcount) = |
my ($datatable,$rowcount) = |
&Apache::loncreateuser::personal_data_display('',$domain,'email','selfcreate', |
&Apache::loncreateuser::personal_data_display('',$domain,'email','selfcreate', |
'','',$now,$captchaform, |
'','',$now,$captchaform, |
$emailusername,$usertype, |
$emailusername,$usertype, |
$usernameset,$condition,$excluded); |
$usernameset,$condition,$excluded, |
|
$showsubmit); |
if ($rowcount) { |
if ($rowcount) { |
$output .= '<div class="LC_left_float">'.$beginclientform.$datatable.$endclientform; |
$output .= '<div class="LC_left_float">'.$beginclientform.$datatable.$endclientform.'</div>'."\n". |
|
'<div class="LC_clear_float_footer"></div>'."\n"; |
} else { |
} else { |
$output .= $beginclientform.$endclientform; |
$output .= $beginclientform.$endclientform; |
} |
} |
if ($rowcount) { |
$output .= $serverform. |
$output .= '</div>'."\n". |
'<p class="LC_info">'. |
'<div class="LC_clear_float_footer"></div>'."\n"; |
&mt('Fields marked [_1]*[_2] are required.','<b>','</b>'). |
} |
'</p>'; |
} else { |
} else { |
$output = &mt('Could not load javascript file [_1]','<tt>londes.js</tt>'); |
$output = &mt('Could not load javascript file [_1]','<tt>londes.js</tt>'); |
} |
} |
Line 1327 sub create_account {
|
Line 1428 sub create_account {
|
unless (($inststatus eq 'default') || ($inststatus eq '')) { |
unless (($inststatus eq 'default') || ($inststatus eq '')) { |
&Apache::lonnet::put('environment',{inststatus => $inststatus},$domain,$username); |
&Apache::lonnet::put('environment',{inststatus => $inststatus},$domain,$username); |
} |
} |
$output .= '<br />'.&mt('Home server: [_1]',$uhome).' '. |
$output .= '<br />'.&mt('Home Server').": $uhome ". |
&Apache::lonnet::hostname($uhome).'<br /><br />'; |
&Apache::lonnet::hostname($uhome).'<br /><br />'; |
return ('ok',$output,$uhome); |
return ('ok',$output,$uhome); |
} else { |
} else { |
Line 1500 sub username_check {
|
Line 1601 sub username_check {
|
'<input type="hidden" name="udom" value="'.$domain.'" />'."\n". |
'<input type="hidden" name="udom" value="'.$domain.'" />'."\n". |
'<input type="hidden" name="phase" value="username_activation" />'; |
'<input type="hidden" name="phase" value="username_activation" />'; |
my $now = time; |
my $now = time; |
my %info = ('ip' => $ENV{'REMOTE_ADDR'}, |
my $ip = &Apache::lonnet::get_requestor_ip(); |
|
my %info = ('ip' => $ip, |
'time' => $now, |
'time' => $now, |
'domain' => $domain, |
'domain' => $domain, |
'username' => $username); |
'username' => $username); |
Line 1704 sub invalid_state {
|
Line 1806 sub invalid_state {
|
$msg .= &mt('Username rules at this institution do not allow the e-mail address you provided to be used as a username.'); |
$msg .= &mt('Username rules at this institution do not allow the e-mail address you provided to be used as a username.'); |
} elsif ($error eq 'userformat') { |
} elsif ($error eq 'userformat') { |
$msg .= &mt('The e-mail address you provided may not be used as a username at this LON-CAPA institution.'); |
$msg .= &mt('The e-mail address you provided may not be used as a username at this LON-CAPA institution.'); |
} elsif ($error eq 'captcha') { |
|
$msg .= &mt('Validation of the code you entered failed.'); |
|
} elsif ($error eq 'noemails') { |
} elsif ($error eq 'noemails') { |
$msg .= &mt('Creation of a new user account using an e-mail address as username is not permitted at this LON-CAPA institution.'); |
$msg .= &mt('Creation of a new user account using an e-mail address as username is not permitted at this LON-CAPA institution.'); |
} elsif ($error eq 'emailfail') { |
} elsif ($error eq 'emailfail') { |