version 1.1, 2006/10/23 21:22:51
|
version 1.2, 2006/10/23 21:40:31
|
Line 32 use Apache::lonacc;
|
Line 32 use Apache::lonacc;
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncommon; |
use Apache::loncommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
use LONCAPA; |
|
|
sub handler { |
sub handler { |
Line 56 sub handler {
|
Line 55 sub handler {
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token']); |
|
|
my @emailtypes = ('permanentemail','critnotification','notification'); |
my @emailtypes = ('permanentemail','critnotification','notification'); |
my $uname = $env{'form.uname'}; |
my $uname = &unescape($env{'form.uname'}); |
my $udom = $env{'form.udom'}; |
my $udom = $env{'form.udom'}; |
$uname =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
|
my $token = $env{'form.token'}; |
my $token = $env{'form.token'}; |
$r->print(&mt('<h3>Reset forgotten LON-CAPA password</h3>')); |
$r->print(&mt('<h3>Reset forgotten LON-CAPA password</h3>')); |
my $output; |
my $output; |
Line 123 sub get_uname {
|
Line 121 sub get_uname {
|
<tr><td colspan="2" align="left"><br /> |
<tr><td colspan="2" align="left"><br /> |
<input type="button" value="$lt{'proc'}" onClick="document.forgotpw.submit()"></td></tr> |
<input type="button" value="$lt{'proc'}" onClick="document.forgotpw.submit()"></td></tr> |
</table> |
</table> |
|
</form> |
|; |
|; |
return $msg; |
return $msg; |
} |
} |
Line 136 sub send_token {
|
Line 135 sub send_token {
|
|
|
my $now = time; |
my $now = time; |
my $temppasswd = &create_passwd(); |
my $temppasswd = &create_passwd(); |
my %info = ('ip' => $ENV{'REMOTE_ADDR'}, |
my %info = ('ip' => $ENV{'REMOTE_ADDR'}, |
'time' => $now, |
'time' => $now, |
'domain' => $udom, |
'domain' => $udom, |
'username' => $uname, |
'username' => $uname, |
'email' => $email, |
'email' => $email, |
'temppasswd' => $temppasswd); |
'temppasswd' => $temppasswd); |
|
|
my $token = &Apache::lonnet::tmpput(\%info,$server); |
my $token = &Apache::lonnet::tmpput(\%info,$server); |
if ($token !~ /^error/) { |
if ($token !~ /^error/) { |
my $esc_token = $token; |
my $esc_token = &escape($token); |
$esc_token =~ s/(\W)/"%".unpack('H2',$1)/eg; |
|
my $mailmsg = "A request was submitted on ".localtime(time)." for a reset of the ". |
my $mailmsg = "A request was submitted on ".localtime(time)." for a reset of the ". |
"password for your LON-CAPA account.". |
"password for your LON-CAPA account.". |
"To complete this process please open a web browser and enter the following ". |
"To complete this process please open a web browser and enter the following ". |
Line 222 sub reset_passwd {
|
Line 220 sub reset_passwd {
|
if ($now - $data{'time'} < 7200) { |
if ($now - $data{'time'} < 7200) { |
if ($env{'form.action'} eq 'verify_and_change_pass') { |
if ($env{'form.action'} eq 'verify_and_change_pass') { |
my $change_failed = |
my $change_failed = |
&Apache::lonpreferences::verify_and_change_password($r,'reset_by_email',$token); |
&Apache::lonpreferences::verify_and_change_password($r,'reset_by_email',$token); |
if (!$change_failed) { |
if (!$change_failed) { |
my $delete = &Apache::lonnet::tmpdel($token); |
my $delete = &Apache::lonnet::tmpdel($token); |
my $now = localtime(time); |
my $now = localtime(time); |
Line 256 sub reset_passwd {
|
Line 254 sub reset_passwd {
|
|
|
sub create_passwd { |
sub create_passwd { |
my $passwd = ''; |
my $passwd = ''; |
my @letts = ("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); |
my @letts = ("a".."z"); |
for (my $i=0; $i<8; $i++) { |
for (my $i=0; $i<8; $i++) { |
my $lettnum = int (rand 2); |
my $lettnum = int(rand(2)); |
my $item = ''; |
my $item = ''; |
if ($lettnum) { |
if ($lettnum) { |
$item = $letts[int( rand(26) )]; |
$item = $letts[int(rand(26))]; |
my $uppercase = int(rand 2); |
my $uppercase = int(rand(2)); |
if ($uppercase) { |
if ($uppercase) { |
$item =~ tr/a-z/A-Z/; |
$item =~ tr/a-z/A-Z/; |
} |
} |
} else { |
} else { |
$item = int( rand(10) ); |
$item = int(rand(10)); |
} |
} |
$passwd .= $item; |
$passwd .= $item; |
} |
} |