version 1.226, 2018/04/27 21:39:42
|
version 1.228, 2019/04/24 01:44:30
|
Line 1263 sub verify_and_change_colors {
|
Line 1263 sub verify_and_change_colors {
|
# password handler subroutines # |
# password handler subroutines # |
###################################################### |
###################################################### |
sub passwordchanger { |
sub passwordchanger { |
my ($r,$errormessage,$caller,$mailtoken) = @_; |
my ($r,$errormessage,$caller,$mailtoken,$timelimit,$extrafields) = @_; |
# This function is a bit of a mess.... |
# This function is a bit of a mess.... |
# Passwords are encrypted using londes.js (DES encryption) |
# Passwords are encrypted using londes.js (DES encryption) |
$errormessage = ($errormessage || ''); |
$errormessage = ($errormessage || ''); |
Line 1299 sub passwordchanger {
|
Line 1299 sub passwordchanger {
|
return; |
return; |
} |
} |
if (defined($data{time})) { |
if (defined($data{time})) { |
if (time - $data{'time'} < 7200) { |
if (time - $data{'time'} < $timelimit) { |
$user = $data{'username'}; |
$user = $data{'username'}; |
$domain = $data{'domain'}; |
$domain = $data{'domain'}; |
$currentpass = $data{'temppasswd'}; |
$currentpass = $data{'temppasswd'}; |
Line 1362 sub passwordchanger {
|
Line 1362 sub passwordchanger {
|
my $jsh=Apache::File->new($include."/londes.js"); |
my $jsh=Apache::File->new($include."/londes.js"); |
$r->print(<$jsh>); |
$r->print(<$jsh>); |
} |
} |
$r->print(&jscript_send($caller)); |
$r->print(&jscript_send($caller,$extrafields)); |
$r->print(<<ENDFORM); |
$r->print(<<ENDFORM); |
$errormessage |
$errormessage |
|
|
Line 1371 $errormessage
|
Line 1371 $errormessage
|
ensure that unencrypted passwords will not be sent out by a |
ensure that unencrypted passwords will not be sent out by a |
crappy browser --> |
crappy browser --> |
ENDFORM |
ENDFORM |
$r->print(&server_form($logtoken,$caller,$mailtoken)); |
$r->print(&server_form($logtoken,$caller,$mailtoken,$extrafields)); |
$r->print(&client_form($caller,\%hexkey,$currentpass,$domain)); |
$r->print(&client_form($caller,\%hexkey,$currentpass,$domain,$extrafields)); |
|
|
# |
# |
return; |
return; |
} |
} |
|
|
sub jscript_send { |
sub jscript_send { |
my ($caller) = @_; |
my ($caller,$extrafields) = @_; |
my $output = qq| |
my $output = qq| |
<script type="text/javascript" language="JavaScript"> |
<script type="text/javascript" language="JavaScript"> |
|
|
Line 1401 sub jscript_send {
|
Line 1401 sub jscript_send {
|
=getCrypted(this.document.client.elements.newpass_2.value); |
=getCrypted(this.document.client.elements.newpass_2.value); |
|; |
|; |
if ($caller eq 'reset_by_email') { |
if ($caller eq 'reset_by_email') { |
$output .= qq| |
if ((ref($extrafields) eq 'HASH') && ($extrafields->{'username'})) { |
|
$output .= qq| |
this.document.pserver.elements.uname.value = |
this.document.pserver.elements.uname.value = |
this.document.client.elements.uname.value; |
this.document.client.elements.uname.value; |
this.document.pserver.elements.udom.value = |
this.document.pserver.elements.udom.value = |
this.document.client.elements.udom.options[this.document.client.elements.udom.selectedIndex].value; |
this.document.client.elements.udom.options[this.document.client.elements.udom.selectedIndex].value; |
|
|; |
|
} |
|
if ((ref($extrafields) eq 'HASH') && ($extrafields->{'email'})) { |
|
$output .= qq| |
this.document.pserver.elements.email.value = |
this.document.pserver.elements.email.value = |
this.document.client.elements.email.value; |
this.document.client.elements.email.value; |
|; |
|; |
|
} |
} |
} |
$ output .= qq| |
$ output .= qq| |
this.document.pserver.submit(); |
this.document.pserver.submit(); |
Line 1419 sub jscript_send {
|
Line 1425 sub jscript_send {
|
} |
} |
|
|
sub client_form { |
sub client_form { |
my ($caller,$hexkey,$currentpass,$defdom) = @_; |
my ($caller,$hexkey,$currentpass,$defdom,$extrafields) = @_; |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'email' => 'E-mail Address', |
'email' => 'E-mail Address', |
'username' => 'Username', |
'username' => 'Username', |
Line 1433 sub client_form {
|
Line 1439 sub client_form {
|
my $output = '<form name="client" action="">' |
my $output = '<form name="client" action="">' |
.&Apache::lonhtmlcommon::start_pick_box(); |
.&Apache::lonhtmlcommon::start_pick_box(); |
if ($caller eq 'reset_by_email') { |
if ($caller eq 'reset_by_email') { |
my $mobileargs; |
if ((ref($extrafields) eq 'HASH') && ($extrafields->{'email'})) { |
(undef,undef,undef,undef,undef,undef,my $clientmobile) = |
$output .= &Apache::lonhtmlcommon::row_title( |
&Apache::loncommon::decode_user_agent(); |
|
if ($clientmobile) { |
|
$mobileargs = 'autocapitalize="off" autocorrect="off" '; |
|
} |
|
$output .= &Apache::lonhtmlcommon::row_title( |
|
'<label for="email">'.$lt{'email'}.'</label>') |
'<label for="email">'.$lt{'email'}.'</label>') |
.'<input type="text" name="email" size="30" '.$mobileargs.'/>' |
.'<input type="text" name="email" size="30" autocapitalize="off" autocorrect="off" />' |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_closure(); |
.&Apache::lonhtmlcommon::row_title( |
} |
|
if ((ref($extrafields) eq 'HASH') && ($extrafields->{'username'})) { |
|
$output .= &Apache::lonhtmlcommon::row_title( |
'<label for="uname">'.$lt{'username'}.'</label>') |
'<label for="uname">'.$lt{'username'}.'</label>') |
.'<input type="text" name="uname" size="20" '.$mobileargs.'/>' |
.'<input type="text" name="uname" size="20" autocapitalize="off" autocorrect="off" />' |
.'<input type="hidden" name="currentpass" value="'.$currentpass.'" />' |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_title( |
.&Apache::lonhtmlcommon::row_title( |
|
'<label for="udom">'.$lt{'domain'}.'</label>') |
'<label for="udom">'.$lt{'domain'}.'</label>') |
.&Apache::loncommon::select_dom_form($defdom,'udom') |
.&Apache::loncommon::select_dom_form($defdom,'udom') |
.&Apache::lonhtmlcommon::row_closure(); |
.&Apache::lonhtmlcommon::row_closure(); |
|
} |
} else { |
} else { |
$output .= &Apache::lonhtmlcommon::row_title( |
$output .= &Apache::lonhtmlcommon::row_title( |
'<label for="currentpass">'.$lt{'currentpass'}.'</label>') |
'<label for="currentpass">'.$lt{'currentpass'}.'</label>') |
Line 1467 sub client_form {
|
Line 1470 sub client_form {
|
.'<input type="password" name="newpass_2" size="20" />' |
.'<input type="password" name="newpass_2" size="20" />' |
.&Apache::lonhtmlcommon::row_closure(1) |
.&Apache::lonhtmlcommon::row_closure(1) |
.&Apache::lonhtmlcommon::end_pick_box(); |
.&Apache::lonhtmlcommon::end_pick_box(); |
|
if ($caller eq 'reset_by_email') { |
|
$output .= '<input type="hidden" name="currentpass" value="'.$currentpass.'" />'; |
|
} |
$output .= '<p><input type="button" value="'.$lt{'changepass'}.'" onclick="send();" /></p>' |
$output .= '<p><input type="button" value="'.$lt{'changepass'}.'" onclick="send();" /></p>' |
.qq| |
.qq| |
<input type="hidden" name="ukey_cpass" value="$hexkey->{'ukey_cpass'}" /> |
<input type="hidden" name="ukey_cpass" value="$hexkey->{'ukey_cpass'}" /> |
Line 1482 sub client_form {
|
Line 1488 sub client_form {
|
} |
} |
|
|
sub server_form { |
sub server_form { |
my ($logtoken,$caller,$mailtoken) = @_; |
my ($logtoken,$caller,$mailtoken,$extrafields) = @_; |
my $action = '/adm/preferences'; |
my $action = '/adm/preferences'; |
if ($caller eq 'reset_by_email') { |
if ($caller eq 'reset_by_email') { |
$action = '/adm/resetpw'; |
$action = '/adm/resetpw'; |
Line 1493 sub server_form {
|
Line 1499 sub server_form {
|
<input type="hidden" name="currentpass" value="" /> |
<input type="hidden" name="currentpass" value="" /> |
<input type="hidden" name="newpass_1" value="" /> |
<input type="hidden" name="newpass_1" value="" /> |
<input type="hidden" name="newpass_2" value="" /> |
<input type="hidden" name="newpass_2" value="" /> |
|; |
|; |
if ($caller eq 'reset_by_email') { |
if ($caller eq 'reset_by_email') { |
$output .= qq| |
$output .= qq| |
<input type="hidden" name="token" value="$mailtoken" /> |
<input type="hidden" name="token" value="$mailtoken" /> |
|
|; |
|
if ((ref($extrafields) eq 'HASH') && ($extrafields->{'username'})) { |
|
$output .= qq| |
<input type="hidden" name="uname" value="" /> |
<input type="hidden" name="uname" value="" /> |
<input type="hidden" name="udom" value="" /> |
<input type="hidden" name="udom" value="" /> |
|
|; |
|
} |
|
if ((ref($extrafields) eq 'HASH') && ($extrafields->{'email'})) { |
|
$output .= qq| |
<input type="hidden" name="email" value="" /> |
<input type="hidden" name="email" value="" /> |
|
|
|; |
|; |
|
} |
} |
} |
$output .= qq| |
$output .= qq| |
<input type="hidden" name="action" value="verify_and_change_pass" /> |
<input type="hidden" name="action" value="verify_and_change_pass" /> |
Line 2290 sub handler {
|
Line 2303 sub handler {
|
}elsif($env{'form.action'} eq 'changepass'){ |
}elsif($env{'form.action'} eq 'changepass'){ |
&passwordchanger($r); |
&passwordchanger($r); |
}elsif($env{'form.action'} eq 'verify_and_change_pass'){ |
}elsif($env{'form.action'} eq 'verify_and_change_pass'){ |
&verify_and_change_password($r,'preferences','',\$ended)); |
&verify_and_change_password($r,'preferences','',\$ended); |
}elsif($env{'form.action'} eq 'changescreenname'){ |
}elsif($env{'form.action'} eq 'changescreenname'){ |
&screennamechanger($r); |
&screennamechanger($r); |
}elsif($env{'form.action'} eq 'verify_and_change_screenname'){ |
}elsif($env{'form.action'} eq 'verify_and_change_screenname'){ |
Line 2314 sub handler {
|
Line 2327 sub handler {
|
&wysiwygchanger($r); |
&wysiwygchanger($r); |
}elsif($env{'form.action'} eq 'set_wysiwyg'){ |
}elsif($env{'form.action'} eq 'set_wysiwyg'){ |
&verify_and_change_wysiwyg($r); |
&verify_and_change_wysiwyg($r); |
|
$ended = 1; |
}elsif($env{'form.action'} eq 'changediscussions'){ |
}elsif($env{'form.action'} eq 'changediscussions'){ |
&discussionchanger($r); |
&discussionchanger($r); |
}elsif($env{'form.action'} eq 'verify_and_change_discussion'){ |
}elsif($env{'form.action'} eq 'verify_and_change_discussion'){ |
Line 2328 sub handler {
|
Line 2342 sub handler {
|
&texenginechanger($r); |
&texenginechanger($r); |
}elsif($env{'form.action'} eq 'verify_and_change_texengine'){ |
}elsif($env{'form.action'} eq 'verify_and_change_texengine'){ |
&verify_and_change_texengine($r); |
&verify_and_change_texengine($r); |
|
$ended = 1; |
}elsif($env{'form.action'} eq 'changeicons'){ |
}elsif($env{'form.action'} eq 'changeicons'){ |
&iconchanger($r); |
&iconchanger($r); |
}elsif($env{'form.action'} eq 'verify_and_change_icons'){ |
}elsif($env{'form.action'} eq 'verify_and_change_icons'){ |
Line 2337 sub handler {
|
Line 2352 sub handler {
|
&clickerchanger($r); |
&clickerchanger($r); |
}elsif($env{'form.action'} eq 'verify_and_change_clicker'){ |
}elsif($env{'form.action'} eq 'verify_and_change_clicker'){ |
&verify_and_change_clicker($r); |
&verify_and_change_clicker($r); |
|
$ended = 1; |
}elsif($env{'form.action'} eq 'changedomcoord'){ |
}elsif($env{'form.action'} eq 'changedomcoord'){ |
&domcoordchanger($r); |
&domcoordchanger($r); |
}elsif($env{'form.action'} eq 'verify_and_change_domcoord'){ |
}elsif($env{'form.action'} eq 'verify_and_change_domcoord'){ |
Line 2355 sub handler {
|
Line 2371 sub handler {
|
&author_space_settings($r); |
&author_space_settings($r); |
}elsif($env{'form.action'} eq 'change_authoring_settings'){ |
}elsif($env{'form.action'} eq 'change_authoring_settings'){ |
&change_authoring_settings($r); |
&change_authoring_settings($r); |
|
$ended = 1; |
}elsif($env{'form.action'} eq 'debugtoggle'){ |
}elsif($env{'form.action'} eq 'debugtoggle'){ |
if (&can_toggle_debug()) { |
if (&can_toggle_debug()) { |
&toggle_debug(); |
&toggle_debug(); |