--- loncom/interface/resetpw.pm 2006/10/23 21:40:31 1.2
+++ loncom/interface/resetpw.pm 2008/01/25 16:46:50 1.8
@@ -58,31 +58,45 @@ sub handler {
my $uname = &unescape($env{'form.uname'});
my $udom = $env{'form.udom'};
my $token = $env{'form.token'};
- $r->print(&mt('
Reset forgotten LON-CAPA password
'));
+ $r->print(&mt(''.&mt('Reset forgotten LON-CAPA password').'
'));
my $output;
if ($token) {
$output = &reset_passwd($r,$token,$contact_name,$contact_email);
} elsif ($uname && $udom) {
- my $domdesc = $Apache::lonnet::domaindescription{$udom};
+ my $domdesc = &Apache::lonnet::domain($udom,'description');
my $authtype = &Apache::lonnet::queryauthenticate($uname,$udom);
if ($authtype =~ /^internal/) {
- my %userinfo =
- &Apache::lonnet::get('environment',\@emailtypes,$udom,$uname);
- my $email = '';
- my $emailtarget;
- foreach my $type (@emailtypes) {
- $email = $userinfo{$type};
- if ($email =~ /[^\@]+\@[^\@]+/) {
- $emailtarget = $type;
- last;
- }
- }
- if ($email =~ /[^\@]+\@[^\@]+/) {
- $output = &send_token($uname,$udom,$email,$server,$domdesc,
- $contact_name,$contact_email);
- } else {
- $output = &invalid_state('missing',$domdesc,
+ my $useremail = $env{'form.useremail'};
+ if ($useremail !~ /^[^\@]+\@[^\@]+\.[^\@\.]+$/) {
+ $output = &invalid_state('baduseremail',$domdesc,
$contact_name,$contact_email);
+ } else {
+ my %userinfo =
+ &Apache::lonnet::get('environment',\@emailtypes,
+ $udom,$uname);
+ my $email = '';
+ my $emailtarget;
+ foreach my $type (@emailtypes) {
+ $email = $userinfo{$type};
+ if ($email =~ /[^\@]+\@[^\@]+/) {
+ $emailtarget = $type;
+ last;
+ }
+ }
+ if ($email =~ /^[^\@]+\@[^\@]+\.[^\@\.]+$/) {
+ if ($useremail eq $email) {
+ $output = &send_token($uname,$udom,$email,$server,
+ $domdesc,$contact_name,
+ $contact_email);
+ } else {
+ $output = &invalid_state('mismatch',$domdesc,
+ $contact_name,
+ $contact_email);
+ }
+ } else {
+ $output = &invalid_state('missing',$domdesc,
+ $contact_name,$contact_email);
+ }
}
} elsif ($authtype =~ /^(krb|unix|local)/) {
$output = &invalid_state('authentication',$domdesc,
@@ -104,20 +118,27 @@ sub get_uname {
my %lt = &Apache::lonlocal::texthash(
unam => 'username',
udom => 'domain',
+ uemail => 'Email address in LON-CAPA',
proc => 'Proceed');
my $msg = &mt('If you use the same account for other campus services besides LON-CAPA, (e.g., e-mail, course registration, etc.), a separate centrally managed mechanism likely exists to reset a password. However, if your account is used for just LON-CAPA access you will probably be able to reset a password from this page.');
- $msg .= '
'.&mt('Three conditions must be met:- An e-mail address must have previously been associated with your LON-CAPA username.
- You must be able to access e-mail sent to that address.
- Your account must be of a type for which LON-CAPA can reset a password.
');
+ $msg .= '
'.&mt('Three conditions must be met:')
+ .'- '.&mt('An e-mail address must have previously been associated with your LON-CAPA username.').'
'
+ .'- '.&mt('You must be able to access e-mail sent to that address.').'
'
+ .'- '.&mt('Your LON-CAPA account must be of a type for which LON-CAPA can reset a password.')
+ .'
';
$msg .= qq|