Diff for /loncom/interface/resetpw.pm between versions 1.1 and 1.2

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;
     }      }

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>