--- loncom/interface/resetpw.pm 2006/10/23 21:40:31 1.2
+++ loncom/interface/resetpw.pm 2009/09/14 14:48:20 1.11.2.1
@@ -1,6 +1,8 @@
# The LearningOnline Network
# Allow access to password changing via a token sent to user's e-mail.
#
+# $Id: resetpw.pm,v 1.11.2.1 2009/09/14 14:48:20 raeburn Exp $
+#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
@@ -41,11 +43,6 @@ sub handler {
if ($r->header_only) {
return OK;
}
- my $start_page =
- &Apache::loncommon::start_page('Reset password','',
- {
- 'no_inline_link' => 1,});
- $r->print($start_page);
my $contact_name = &mt('LON-CAPA helpdesk');
my $contact_email = $r->dir_config('lonSupportEMail');
my $server = $r->dir_config('lonHostID');
@@ -58,31 +55,50 @@ 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
'));
+ my $start_page =
+ &Apache::loncommon::start_page('Reset password','',
+ {
+ 'no_inline_link' => 1,});
+ $r->print($start_page);
+ $r->print(''.&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 +120,27 @@ sub get_uname {
my %lt = &Apache::lonlocal::texthash(
unam => 'username',
udom => 'domain',
+ uemail => 'E-mail 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 GCI WebCenter 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|